1、工作佇列之公平分發
1.1、使用公平分發必須關閉自動應答,ack改成手動
生產者:消費者1:消費者2:
消費者2處理的訊息比消費者1多(能者多勞)
2、訊息應答和訊息持久化
autoack:boolean型別(true、false)
true:rabbit將訊息分發給消費者,就會從記憶體中刪除
如果殺死正在執行的消費者,就會丟失正在處理的資訊
false:如果有乙個消費者掛掉,就會交給另乙個消費者進行處理,rabbitmq支援訊息應答
消費者傳送乙個訊息應答告訴rabbitmq這個訊息處理完成,可以刪除了。之後rabbitmq就會刪除記憶體的訊息
訊息應答預設是false(開啟狀態的)
boolean autoack=true;channel.basicconsume(queue_name, autoack, consumer);
訊息持久化:boolean durable=false;
channel.queuedeclare(queue_name, durable, false, false, null);
durable=false不能改成true;改成true**不出錯,但是執行會有錯誤
rabbitmq不允許重新定義乙個存在的佇列
3、訂閱模式解讀:1、乙個生產者,多個消費者
2、每乙個消費者都有自己的佇列
3、生產者沒有直接把訊息傳送到佇列而是到了交換機
4、每個佇列都要繫結到交換機上
5、生產者傳送的訊息 經過交換機 到達佇列 就能實現乙個訊息被多個消費者消費
RabbitMQ 知識總結
amqp協議是乙個提供統一訊息服務的應用層標準協議,並不會受到客戶端 中介軟體不同產品 不同開發語言等條件的影響。rabbitmq則是基於該協議實現的。舉個例子來說,如下圖,生產者將訊息傳送到交換機上,交換機接收到資訊以後按照相應的路由鍵路由到佇列中,這裡的交換機只是起到了路由的功能,實際上訊息儲存...
Rabbit MQ學習總結
1,獲取conection 2,獲取channel 3,定義exchange,queue 4,使用乙個routingkey將queue binding到乙個exchange上 5,通過指定乙個exchange和乙個routingkey來將訊息傳送到對應的queue上,6,接收方在接收時也是獲取con...
RabbitMQ 知識總結
amqp協議是乙個提供統一訊息服務的應用層標準協議,並不會受到客戶端 中介軟體不同產品 不同開發語言等條件的影響。rabbitmq則是基於該協議實現的。舉個例子來說,如下圖,生產者將訊息傳送到交換機上,交換機接收到資訊以後按照相應的路由鍵路由到佇列中,這裡的交換機只是起到了路由的功能,實際上訊息儲存...