伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

rabbitmq死信队列,消息延迟消费

来源:本站原创 浏览:92次 时间:2022-12-05

rabbitmq中如果消息被拒绝,或消息过期,或极端情况队列达到最大长度,这时消息就变成了死信,死信消息可以通过队列绑定死信交换器,从而将消息路由到死信交换器绑定的队列里。

public static void main(String[] argv) throws Exception {
   ConnectionFactory factory = new ConnectionFactory();
   factory.setHost("localhost");
   try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {
       /** 定义一个死信交换机 和普通交换机无区别 */
       channel.exchangeDeclare("dlx_exchange", "direct", true, false, null);
       channel.queueDeclare("dlx_queue", true, false, false, null);
       channel.queueBind("dlx_queue", "dlx_exchange", "dlx_route");

       Map<String, Object> args = new HashMap<>(1);
       args.put("x-message-ttl", 5000);
       args.put("x-dead-letter-exchange","dlx_exchange");
       args.put("x-dead-letter-routing-key","dlx_route");
       /** 定义业务交换机 通过参数设置备份交换机 */
       channel.exchangeDeclare("biz_exchange_ttl", "direct", true,false,null);
       channel.queueDeclare("biz_queue_ttl", true, false, false, args);
       channel.queueBind("biz_queue_ttl", "biz_exchange_ttl", "biz_route");

       channel.basicPublish("biz_exchange_ttl", "biz_route", MessageProperties.PERSISTENT_TEXT_PLAIN, "hello star".getBytes());
   }
   Scanner scanner = new Scanner(System.in);
   while (scanner.hasNext()) {
       System.out.println(scanner.next());
   }
}

死信交换器本身和普通交换器并无区别,可以指定自己的交换器类型,绑定指定的队列,并声明routingKey。

类似备份交换器,死信交换器可以通过参数关联到正常的业务队列上,当正常消息变成死信消息后,将自动发送至死信交换器,最终保存到死信消息队列里。我们可以监听死信队列,来消费死信消息。


可以看到关联了死信交换器的队列,有了更多的特性,D:durable持久化,TTL:过期时间,DLX:死信交换器,DLK:死信routingKey。

DLX组合TTL可以轻松实现延迟消费场景,例如:常见的订单支付场景,通常订单提交后15分钟未进行支付,订单将被取消。

如果使用定时器来处理这些超时订单,需要创建定时任务,定时任务尚需实现超时相关逻辑,针对不同的超时时间,可能还要创建多个定时任务,事倍功半。

使用DLX+TTL只需监听死信队列,只要出现在死信队列里的那就是超时的消息,可以根据超时时间TTL轻松配置多个死信队列,事半功倍。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net