上一篇 <<<Rabbitmq隊列模式總結(jié)
下一篇 >>>Springboot利用AmqpTemplate整合Rabbitmq
1.設(shè)計思路
2.方案說明
2.1 生產(chǎn)者提交給消息服務(wù)器時陷舅,使用確認機制
channel.confirmSelect();
…………
if (channel.waitForConfirms()) {
System.out.println("發(fā)送消息成功");
} else {
System.out.println("發(fā)送消息失敗");
}
生產(chǎn)者收不到確認的情況:
1)呕诉、MQ掛了
2)首装、MQ滿了媒至,
解決辦法:每次的生產(chǎn)者消息發(fā)送都通過日志表記錄下來龄句,后續(xù)采用手動補償即可
2.2 消息服務(wù)器對應(yīng)的隊列检疫、交換機等都持久化厘熟,保證數(shù)據(jù)的不丟失
1)嘲恍、代碼設(shè)置
2)、控制平臺設(shè)置---默認都是持久化的嚷狞。臨時的話重啟后就會消失
durable是否持久化 durable為持久化块促、 Transient 不持久化
autoDelete 是否自動刪除,當最后一個消費者斷開連接之后隊列是否自動被刪除感耙,可以通過RabbitMQ Management,查看某個隊列的消費者數(shù)量持隧,當consumers = 0時隊列就會自動刪除
如果已經(jīng)設(shè)置了持久化即硼,則給生產(chǎn)者確認的時候就是持久化成功后的確認。這樣就算硬盤壞了屡拨、持久化的過程斷電了只酥,都不會影響到消息的丟失,因為生產(chǎn)者收不到確認證明沒發(fā)送成功呀狼。
2.3 消費者采用消息確認機制裂允,保證數(shù)據(jù)的不丟失
1)、消息隊列到消費者的方式有首次主動拉取哥艇、后續(xù)生產(chǎn)者發(fā)送時的主動推送和消費者發(fā)生異常時的重試三種方式绝编。
2)、消息應(yīng)答的方式默認為自動,即消費者收到消息時十饥,隊列即刪除窟勃。如果消費者出現(xiàn)了斷電等情況,也會被直接刪除逗堵。所以要改成手動確認刪除后秉氧,隊列才會真正刪除,這樣保證了消息的不丟失蜒秤。
channel.basicConsume(QUEUE_NAME, false, defaultConsumer);
注:第二個參數(shù)值為false代表關(guān)閉RabbitMQ的自動應(yīng)答機制汁咏,改為手動應(yīng)答。
在處理完消息時作媚,返回應(yīng)答狀態(tài)攘滩,true表示為自動應(yīng)答模式。
channel.basicAck(envelope.getDeliveryTag(), false);
3.Rabbitmq如何開啟持久化的功能
- 默認的情況下mq服務(wù)器端創(chuàng)建隊列和交換機都是持久化的
- 如果是代碼創(chuàng)建的話掂骏,將該值設(shè)置為durablet
推薦閱讀:
<<<消息中間件的核心思想
<<<消息中間件常見問題匯總
<<<基于Netty簡單手寫消息中間件思路
<<<消息隊列常用名詞與中間件對比
<<<Rabbitmq基礎(chǔ)知識
<<<Rabbitmq示例之點對點簡單隊列
<<<Rabbitmq示例之工作(公平)隊列
<<<Rabbitmq示例之發(fā)布訂閱模式
<<<Rabbitmq示例之路由模式Routing
<<<Rabbitmq示例之通配符模式Topics
<<<Rabbitmq示例之RPC模式
<<<Rabbitmq隊列模式總結(jié)
<<<Springboot利用AmqpTemplate整合Rabbitmq
<<<Rabbitmq如何保證冪等性
<<<Rabbitmq的重試策略
<<<Rabbitmq通過死信隊列實現(xiàn)過期監(jiān)聽
<<<Rabbitmq解決分布式事務(wù)思路
<<<Rabbitmq解決分布式事務(wù)demo
<<<Rabbitmq環(huán)境安裝
<<<Kafka中的專業(yè)術(shù)語都有哪些
<<<Kafka的設(shè)計原理介紹
<<<Kafka集群如何實現(xiàn)相互感知
<<<Kafka如何實現(xiàn)分區(qū)及指定分區(qū)消費
<<<Kafka如何保證消息順序消費
<<<Kafka如何保證高吞吐量
<<<Kafka集群環(huán)境搭建
<<<RocketMQ架構(gòu)原理
<<<RocketMQ轰驳、RabbitMQ和Kafka的對比
<<<SpringBoot整合RocketMQ示例
<<<RocketMQ保證順序消費demo
<<<RocketMQ如何動態(tài)擴容和縮容
<<<RocketMQ如何解決分布式事務(wù)
<<<RocketMQ單機版本安裝
<<<RocketMQ集群環(huán)境程序啟用相關(guān)知識點
<<<RocketMQ單機做主備實操
<<<RocketMQ所有配置說明