RabbitMQ 訊息實現過程+事務+訊息確認
阿新 • • 發佈:2022-04-10
服務端(生產者)
1、引用 rabbitmq 包
2、建立連線工廠 connectionfactory
3、建立 頻道 createchannel
4、在頻道中 繫結訊息佇列
5、釋出basicpubilsh 訊息
服務端和rabbitmq 的事務(多條訊息傳送--必須保證全部成功)
txSelect() 開啟事務
txCommit 提交事務
txrollback 回滾
服務端和rabbitmq 進行訊息確認(防止rabbitmq 故障)
channel.confirmSelect() 開啟訊息確認
channel.WaitForConfirms() 接收rabbit 的反饋訊息 bool 是否成功
channel.WaitForConfirmOrDie() 無返回值,成功在此方法後繼續執行邏輯
客戶端(消費者)
1、引用 rabbitmq 包
2、建立連線工廠 connectionfactory
3、建立 頻道 createchannel
4、在頻道中 繫結訊息佇列
5、定義Consumer 繫結channel,consumer.Received+=(model,ea)=>{接受訊息(二進位制)}
6、消費basicConsume訊息
rabbitmq 和消費者的訊息確認
1、自動確認回執
channel.BasicConsume(queue:"hello",autock:false,consume:consumer)
2、非自動確認(解決,訊息接受成功,消費者內部執行失敗)
如果發生異常 channel.BasicReject 拒絕--通知rabbitmq 讓其他消費者消費,rabbitmq 不再給當前消費者 釋出訊息
未發生異常 channel.BasicAck主動刪除 rabbitmq 裡的訊息
channel.BasicConsume(queue:"hello",autock:true,consume:consumer)