提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
目錄
一、下載安裝包,搭建過程
二、重要概念介紹
三、創建用戶
方式一:命令行
方式二:管理后臺
3.1 創建用戶
3.2 分配權限
3.3 提升用戶為管理員
3.4 驗證
四、創建exchange和queue
五、測試驗證發送和消費功能
5.1 發送消息
5.2 消費消息
5.3 從管理臺進行驗證
?編輯
六、測試獲取消息內容
總結
提示:以下是本篇文章正文內容,下面案例可供參考
一、下載安裝包,搭建過程
這篇文章里說的非常的詳細了,Windows系統的直接按步驟操作,沒什么難度
一文詳解Windows安裝配置RabbitMQ教程及RabbitMQ常用命令及解決Erlang Could not be detected.you must install Erlang before_windows rabbitmq-CSDN博客
二、重要概念介紹
Exchange(交換機)
作用:Exchange是消息的路由器。生產者將消息發送給exchange,而不是直接發送給隊列。exchange根據預定義的規則(稱為binding)來決定哪些消息應該路由到哪個隊列
類型:Exchange有多種類型,如direct(直接交換機)、fanout(廣播交換機)、topic(主題交換機)和headers(基于消息頭的交換機),每種類型的exchange有不同的路由策略
配置:Exchange需要預先聲明,指定其類型和任何其他相關配置
Queue(隊列)
作用:Queue是消息的實際存儲區域,它是消息的臨時容器。隊列中的消息被消費者消費,或者在隊列滿時被丟棄(如果配置了限制)
特性:隊列可以是持久的,意味著即使RabbitMQ服務器重啟,隊列也會保留。隊列也可以是非持久的,服務器重啟后隊列將消失
消費:消費者從隊列中獲取消息,可以是同步的(一次性獲取一條消息并確認)或異步的(批量獲取或流式消費)
Channel(信道)
作用:Channel是客戶端和服務器之間的邏輯連接,用于發送和接收消息。它允許在單個TCP連接上創建多個獨立的并行通道,提高了效率
資源管理:創建和銷毀TCP連接是昂貴的操作,因此通常會復用一個TCP連接并創建多個channel來處理不同的任務
并發:在一個應用程序中,通常會為每個任務或線程創建一個單獨的channel,以保持操作的隔離
三、創建用戶
通常我們安裝、啟動RabbitMQ成功之后,系統默認用戶guest/guest,該用戶的權限比較大,日常使用過程中需要根據需要創建不同權限的用戶
創建用戶有兩種方式:
方式一:命令行
這里password是你為admin用戶設置的密碼
rabbitmqctl add_user admin password
接下來,你需要提升用戶權限,使其具有管理權限
rabbitmqctl set_user_tags admin administrator
分配vhost權限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
這三個通配符參數".*"分別代表配置(conf),寫(write)和讀(read)權限,.*表示所有權限。
如果你想更具體地控制權限,可以將通配符替換為具體的權限字符串
方式二:管理后臺
3.1 創建用戶
在左側菜單中,點擊“Users”
點擊右上角的“Add user”按鈕
輸入用戶名(例如admin)和密碼
點擊“Add”按鈕
3.2 分配權限
在用戶列表中,找到剛創建的admin用戶,點擊它的名稱
在用戶詳情頁面,選擇“Permissions”選項卡
選擇要分配權限的vhost(通常是/)
在“Configure permissions”、“Write permissions”和“Read permissions”字段中,輸入通配符.*來授予所有權限,或者輸入特定的權限字符串
點擊“Set Permissions”按鈕
3.3 提升用戶為管理員
返回到用戶列表,再次點擊admin用戶
在用戶詳情頁面,滾動到“User tags”部分
勾選“administrator”復選框
點擊“Update”按鈕
3.4 驗證
退出當前的guest用戶,然后使用新創建的admin用戶和密碼登錄。現在,admin用戶應該有權限創建exchange和其他管理操作
注意:不要試圖創建amq.test這種exchange,即使你設置了權限,也會提示沒有權限
四、創建exchange和queue
使用admin賬戶登入,然后切換到exchange,建議在管理臺操作,簡單快捷
然后再切換到queue
?
第三步,將exchange和queue綁定
?
至此,前期準備工作完成
五、測試驗證發送和消費功能
5.1 發送消息
此處我用了一個簡單的python腳本,相較springboot集成rabbitmq進行驗證,有快捷簡單的優點
# 導入pika庫,它提供了與RabbitMQ交互的接口
import pika
# 創建一個到RabbitMQ服務器的阻塞式連接,'localhost'應替換為實際的服務器地址
connections = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
# 獲取一個通道(channel),它是與RabbitMQ進行通信的實體
channel = connections.channel()
# 聲明一個名為'my_direct_exchange'的exchange,類型為'direct'
# direct exchange是最基礎的類型,消息會根據routing key精確匹配到queue
channel.exchange_declare(exchange='test-mq', exchange_type='direct', durable=True)
# 定義要發送的消息,這里是一個簡單的字符串'Hello, World!'
message = 'Hello, world'
# 發布消息到exchange,指定exchange名稱、routing key和消息體
# routing key將決定消息如何路由到queue
channel.basic_publish(exchange='test-mq', routing_key='test-queue-1', body=message)
# 關閉連接,釋放資源
connections.close()
5.2 消費消息
import pikadef callback(ch, method, properties, body):# 這個回調函數會在接收到消息時被調用print(body)# 在這里處理消息,比如處理業務邏輯ch.basic_ack(delivery_tag=method.delivery_tag)connections = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connections.channel()
# 聲明一個隊列(如果不存在,會自動創建)
channel.queue_declare(queue='test-queue-1', durable=True)
# 定義消息消費行為
channel.basic_consume(queue='test-queue-1', on_message_callback=callback, auto_ack=False)
# 開始消費消息
channel.start_consuming()
5.3 從管理臺進行驗證
每隔10秒會刷新,上圖列出來的是消息待消費消息總數,下圖列出來的是每個時間段發送消息的數量
六、測試獲取消息內容
至此,RabbitMQ的搭建及使用就完成了。
總結
在小小的公司里面,挖呀挖呀挖!