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 暫時...