RabbitMQ使用指南

2021-09-03 03:04:01 字數 2824 閱讀 7365

環境變數配置erlang_home 安裝路徑

注意事項

安裝erlang 時注意 一致

c:\windows\system32\config\systemprofile\.erlang.cookie

c:\users\使用者名稱\.erlang.cookie

出現失敗時

rabbit-service start 啟動服務

rabbit-service stop 關閉服務

rabbit-service remove 移除服務

rabbitmq-plugins enable rabbitmq_management 安裝頁面管理工具

//獲取連線

connectionfactory connectionfactory = new connectionfactory();

//位址

connectionfactory.sethost("127.0.0.1");

//埠號

connectionfactory.setport(5672);

//使用者名稱

connectionfactory.setusername("guest");

//密碼

connectionfactory.setpassword("guest");

//獲取連線

connection connection = connectionfactory.getconnection();

//獲取通道

channel channel = connection.getchannel();

//test 佇列名稱

channel.queuedeclare("test",false,false,false,null);

//訊息

string message = "this is a test message";

//傳送訊息

channel.basicpublish("","test",null,message.getbytes());

//關閉頻道 關閉連線

channel.close();

connection.close();

connectionfactory 用來獲取連線

connection rabbitmq的socket連線,豐庄路socket協議相關部分邏輯

channel用來定義queue(佇列)定義exchange(交換機)繫結queue與exchange 發布訊息等操作

rabbitmq的內部物件 用來儲存訊息

message acknowledgment

訊息確認機制

mq在收到訊息回執時將訊息從queue中移除,如果沒有收到回執,並檢測到消費者的rabbitmq連線斷開,會將訊息傳送給其它消費者(如果存在多個消費者)處理
開發過程注意

處理完業務邏輯後,沒有傳送回執給rabbitmq,會導致queue中的訊息越來越多,消費者重啟後出現訊息的重複消費問題
訊息的持久化以及訊息的事務性

prefetch count

可以設定該引數控制發給每個消費者的訊息數.

宣告queue

宣告方式 queue.declare

總結

存活週期僅限於當前連線

自動刪除的特性

僅能建立一次

路由規則

消費者訂閱訊息

多個消費者同時訂閱同乙個佇列,rabbitmq是採用迴圈的方式分發訊息的,每一條訊息只能被乙個訂閱者接收.消費者在接到訊息時,需要給伺服器傳送一套確認命令,可以在handeldelivery中呼叫basic.ack實現,也可以在consume某個佇列時,設定autoack屬性為true.如果消費者在接到訊息以後還沒來得及返回ack就斷開了連線,訊息伺服器會重傳該訊息給下乙個訂閱者,沒有訂閱者就會儲存該訊息.

生產者訊息確認

事務機制

channel channel = getchannel();

//將通道置為 publisher confirm 模式

try catch (ioexception e)

傳送方確認機制

channel channel = getchannel();

//將通道置為 publisher confirm 模式

channel.confirmselect();

channel.basicpublish("test_direct_exchange", "test_queue",

null, "this is a test msg".getbytes());

if (channel.waitforconfirms())

channel.close();

批量confirm

非同步confirm

qps

非同步confirm 支援的峰值最高

均值 非同步與批量相差不多 大約是其他兩種的五到六倍

均值 普通confirm 比事務方式略高

訊息的消費

對於同乙個訊息佇列 如果擁有多個消費者時 佇列收到的訊息將以輪詢的分發方式傳送給消費者

Ubuntu apt 使用指南

起初gnu linux系統中只有.tar.gz。使用者必須自己編譯他們想使用的每乙個程式。在debian出現之後,人們認為有必要在系統中新增 一種機制用來管理安裝在計算機上的軟體包。人們將這套系統稱為dpkg。至此著名的 package 首次在gnu linux上出現。不久之後紅帽子也 開始著手建立...

CImageList使用指南

1.綜述 在mfc 中cimagelist 類封裝了 影象列表控制項的功能,影象列表是乙個具有相同大小的 影象 可以是不同 型別 的集合,其主要用於 應用程式中大規模 圖示的儲存。該控制項是不可 見的,通常與其它如 clistbox ccombobox ccomboboxex ctabctrl 以及...

CImageList使用指南

cimagelist使用指南 1.綜述 在 mfc中cimagelist類封裝了影象列表控制項的功能,影象列表是乙個具有相同大小的影象 可以是不同型別 的集合,其主要用於應用程式中大 規模圖示的儲存,該控制項是不可見的。通常與其它如clistbox,ccombobox,ccomboboxex以及ct...