RabbitMQ的七種工作模式 工作模式 二

2021-10-09 20:27:13 字數 2308 閱讀 7659

2.工作模式

乙個生產者,多個消費者,不涉及exchange

工作模式的優點是,在供大於求或供不應求的情況下,可插拔消費者。

訊息生產者:

import com.rabbitmq.client.channel;

import com.rabbitmq.client.connection;

import com.rabbitmq.client.connectionfactory;

import com.rabbitmq.client.messageproperties;

/** * @author becolette

* @description 請註明類功能

* @datetime 2020/9/24 15:32

*/public

class

newtask

}catch

(exception e)

}}

訊息消費者公用方法:

public

static

void

recv()

throws exception

* or

* 標籤可以從getok或deliver種獲取

* @param multiple true to acknowledge all messages up to and

* including the supplied delivery tag; false to acknowledge just

* the supplied delivery tag.

* 如果true則訊息和標籤一起返回,否則返回標籤

*/channel.

basicack

(delivery.

getenvelope()

.getdeliverytag()

,false);

/** 如果要形成交替輸出,可以加等待時間 */

trycatch

(interruptedexception e)};

/** 參考簡單模式引數說明 */

channel.

basicconsume

(task_queue_name,

false

, delivercallback, consumertag -

>);

}

建立兩個消費者類wokrecv1,workrecv2,呼叫如下:

commonrecv.recv();
該模式引出三個重點-訊息確認:1.自動模式消費者從訊息佇列拿走資訊之後,服務端就認為訊息被成功消費

2.手動模式

消費者從訊息佇列獲取訊息後,服務端並沒有標記為成功消費

消費者成功消費後需要將狀態返回到服務端

手動模式處理方式:

1.如果訊息被正常處理,返回確認資訊,佇列中刪除該訊息

2.如果訊息正常發出,但是因為確認資訊返回丟失,連線被關閉或是tcp連線關閉,則對訊息進行重新排隊,或則交付給其他消費者處理

3.如果訊息消費者不存在,則會一直等到訊息被消費

以上是訊息確認中的手動確認方式,預設是開啟狀態,可以用autoack=true關閉手動確認。

手動確認的優缺點:

優點:保證在訊息沒有正常消費的情況下,佇列中不能被刪除,保證訊息的準確完整消費

缺點:消費未被消費會不斷堆積,導致記憶體溢位

(linux:sudo rabbitmqctl list_queues name messages_ready messages_unacknowledged

windows:rabbitmqctl.bat list_queues name messages_ready messages_unacknowledged)

訊息持久化

保證消費者死亡,任務也不會丟失;需要將佇列和訊息都標記為持久。但不能完全保證,因為訊息有可能消費很快,或則在寫入磁碟時斷電,會丟失資料,但情況很少出現

訊息公平消費

保證不會有的消費者很忙,有的卻很空閒,出現飢餓或是過飽現象

ARM七種工作模式

arm的7種工作模式 arm有七種工作模式分別包括一種特權模式和六種工作模式 工作模式還包括乙個系統模式和五個異常模式。特權模式 user 非特權模式,大部分任務執行在這種模式。工作模式 system 系統模式,使用和user模式相同的暫存器集的特權模式。fiq 快速中斷模式 irq 慢中斷模式 s...

七種測試驅動模式

基於對軟體工程 產品質量和測試的理解,歸納出以下七類測試驅動模式。1 業務 需求驅動測試 乙個軟體總是要解決使用者的某類業務問題。業務驅動測試就是從使用者的實際業務需求出發,分析業務目標 業務流程 使用者角色 業務規則 業務發展等測試物件,針對這些物件確定測試範圍 測試方法和策略。測試是否充分,也是...

Linux的七種執行模式

0 代表 關機模式 此模式 linux是關機狀態 1 代表 單使用者模式 例如root的密碼忘記了,可以在該模式下完成密碼的找回 2 沒有nfs網路共享的多使用者模式 nfs network file system 3 代表的是命令列模式 一般生產環境都是使用的該模式,該模式下沒有桌面程式 4 暫時...