模擬一個下訂單成功,然後庫存減1的業務場景,以上是流程圖。除了RabbitMQ自身的可靠性投遞之外,該方案會在30秒後發送一條延時檢查的消息,判斷消息有沒有成功入庫,如果沒有,則會重新發起一次消息,做二次確認,避免因網絡抖動導致消息投遞失敗的情況。GitHub源碼:https://github.com/MonkeyOneCool/rabbitmq-delaycheck。需要注意的是,RabbitMQ需要安裝延時消息插件,官網地址:https://www.rabbitmq.com/community-plugins.html:
下載完成後將插件放在RabbitMQ的plugins目錄下,然後輸入下面的命令即可開啓插件:
rabbitmq-plugins enable rabbitmq_delayed_message_exchange