相比于DLXConsumer
, DMConsumer
里 , 我们不需要额外的队列 , 只需要创建orders.notification_dm
交换机即可 , 同时直接将交换机绑定到orders.notification
交换机 , EasyNetQ
里使用AsDelayedExchange
指示该交换机为延迟交换机 , 使用WithDelay
设置消息延迟时间通过查看EasyNetQ
源码 https://github.com/EasyNetQ/EasyNetQ/blob/master/Source/EasyNetQ/DelayedExchangeExtensions.cs , 它封装延迟交换机的设置

文章插图
启动
Producer
再生成一些数据 , 然后运行DLXConsumer
看效果 , 和DLXConsumer
一样
文章插图
打开RabbitMQ后台 , 可以看到多了一个类型为
x-delayed-message
的orders.notification_dm
交换机 , 带有DM
和Args
两个标签
文章插图
【【.NET 6】RabbitMQ延迟消费指南】进入交换机 , 可以看到里面已经存储了13条消息 。

文章插图
总结自此 , 利用队列的死信交换机策略和利用
rabbitmq_delayed_message_exchange
插件实现RabbitMQ消息延迟已经介绍完毕 , 下面是.NET6 demo完整的项目结构
文章插图
其实除了这两种 ,
EasyNetQ
也有一个调度器(Scheduler)可以实现延迟消息 , 但似乎需要依赖数据库 , 不是主流的做法不推荐使用 。如有任何问题或者意见 , 欢迎评论 。
经验总结扩展阅读
- 希腊现在是哪个国家
- 2023年12月31日适合装修吗 2023年12月装修吉日一览表
- 酒精能放在车里吗
- 奥运会发源地是哪个国家
- 2023年12月1日适合结婚吗 今天是黄道吉日吗
- 过夜的小龙虾还能吃吗
- 冰箱冷藏多少度合适
- 荷花代表什么生肖
- 独一无二美甲店名字美甲店起名大全
- 金字塔和埃菲尔铁塔谁高