kafka如何保障數據庫最終一致性 如何使用消息隊列解決分布式事務?
如何使用消息隊列解決分布式事務?有兩個選擇。方案1本地消息事務表生產者需要添加一個事務消息表,具體步驟可以通過這種實現:。1.生產者執行業務邏輯,并在消息表中插入一個事務記錄。這兩個操作在一個本地事務
如何使用消息隊列解決分布式事務?
有兩個選擇。
方案1本地消息事務表
生產者需要添加一個事務消息表,具體步驟可以通過這種實現:。
1.生產者執行業務邏輯,并在消息表中插入一個事務記錄。這兩個操作在一個本地事務中。
2.啟動一個后臺線程定期輪詢消息表,并將消息發送到消息隊列。
3.刪除消息表中的記錄,直到傳輸成功。
第二種方案需要消息隊列的支持,業務方提供查詢接口。
1.生產者將準備好的消息發送到消息隊列。
2.本地事務中的業務邏輯
3.根據執行結果確認或取消準備好的消息。
4.消息隊列會保證預發布的消息會被確認或取消,消息隊列會不斷向生產者索取執行結果,這就需要生產者提供類似的回調函數。
方案2相當于方案1中的消息隊列代替消息表和后臺線程輪詢功能,但并不是所有的消息隊列都支持該功能。支持Rock
消息隊列原理?
消息隊列主要解決應用耦合、異步消息和流量裁剪問題。實現高性能、高可用性、可擴展和最終一致的架構。廣泛使用的消息隊列有Kafka、ActiveMQ、RabbitMQ、ZeroMQ、MetaMQ和RocketMQ。
消息隊列在實際應用中常見的使用場景是異步處理、應用解耦、流量裁剪和消息通信。