日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rabbitmq延迟队列实现

發(fā)布時間:2024/9/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rabbitmq延迟队列实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

延遲隊列

Rabbitmq并沒有延遲隊列

但是:死信隊列+消息時間設(shè)置過期時間可以 達成我們想要的延遲隊列效果

例如下單5分鐘之內(nèi)未支付就會取消訂單,那么設(shè)置下單支付時間為5分鐘后過期然后進入死信隊列,一旦進入死信隊列那么就自動取消訂單

代碼
消費者:

@Component public class ttlproducer {@Autowiredprivate RabbitTemplate rabbitTemplate;// 模擬訂單public void makeTest(String a,String b){String ExchangeName = "ttl.direct.Exchange";String luYouKey = "ttl";String message = UUID.randomUUID().toString();System.out.println("訂單生成----"+message);rabbitTemplate.convertAndSend(ExchangeName,luYouKey,message);} }

創(chuàng)建死信隊列
這個死信隊列 專門存放未支付訂單的消息

@Configuration public class dlxconsumer {@Beanpublic DirectExchange deadExchange(){return new DirectExchange("dlx.direct.Exchange");}@Beanpublic Queue abcdQueue(){return new Queue("si.xin.Queue");}@Beanpublic Binding abcdBinding(){return BindingBuilder.bind(abcdQueue()).to(deadExchange()).with("dead");} }

創(chuàng)建訂單過期時間

@Configuration public class ttlconsumer {@Beanpublic DirectExchange directExchange(){return new DirectExchange("ttl.direct.Exchange",true,false);}@Beanpublic Queue abcQueue(){HashMap<String, Object> args = new HashMap<>();args.put("x-message-ttl",5000);//5秒args.put("x-dead-letter-exchange","dlx.direct.Exchange");args.put("x-dead-letter-routing-key","dead");return new Queue("ding.dan.Queue",true,false,false,args);}@Beanpublic Binding abcBinding(){return BindingBuilder.bind(abcQueue()).to(directExchange()).with("ttl");} }

測試

@SpringBootTest class SpringBootRabbitmqSixingduilieApplicationTests {@Autowiredprivate ttlproducer ttlproducer;@Testvoid contextLoads() {ttlproducer.makeTest("下單","...");} }


我們可以去web界面看
訂單超時時間設(shè)置的是5秒過期時間
看看我們過期的消息是否進入到死信隊列

其實上面的死信隊列已經(jīng)起到了延遲隊列的作用
5秒內(nèi)如果消費不了就會轉(zhuǎn)投到死信隊列里

總結(jié)

以上是生活随笔為你收集整理的rabbitmq延迟队列实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。