前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ系列教程 高级篇六 消费端自定义监听

RabbitMQ系列教程 高级篇六 消费端自定义监听

原创
作者头像
凯哥Java
修改2019-07-29 10:53:08
5920
修改2019-07-29 10:53:08
举报
文章被收录于专栏:凯哥Java凯哥Java

本文是《RabbitMQ系列教程》中的十三篇:RabbitMQ消息中间件技术精讲13 高级篇六 消费端自定义监听。如果对RabbitMQ感兴趣的同学,建议从第一篇开始

在之前的代码中我们一般就是在代码中写while循环,进行consumer.nexDelivery方法进行获取下一条消息,然后进行消费处理。

但是在工作中,我们一般使用自定义的Consumer更加的方便,解耦性更加的强。

代码如下:

自定义消费监听类完整代码:

public class MyConsumer extends DefaultConsumer {   public MyConsumer(Channel channel) {       super(channel);   }   /**    *    * @param consumerTag       消费标签    * @param envelope          envelope对象。里面有很多关键西悉尼    * @param properties    * @param body    * @throws IOException    */   @Override   public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {       System.err.println("-----------consume message----------");       System.err.println("consumerTag: " + consumerTag);       System.err.println("envelope: " + envelope);       System.err.println("properties: " + properties);       System.err.println("body: " + new String(body));       super.handleDelivery(consumerTag, envelope, properties, body);   }}

使用:

    在消费者端代码修改如下:

将原来的while循环替换成了自定义的消费监听类。

启动代码查看运行:查看消费者端的运行结果,入下图:

我们看到在envelope对象中有个deliveryTag属性。大家还记着这个属性码?在前面的课程中,我们讲过这个属性了。在confirm消息确认的那一篇文章中,我们知道了deliveryTag是消息的唯一标签。在消息确认监听的时候会使用到。

我们发现,唯一标签默认情况下是自增长的。

本节总结:

相关代码已经推送到git上面了。欢迎大家下载.欢迎关注凯哥(凯哥Java【凯哥Java】)

在下一节课中,我们将讲解一个重要的知识点:消费端怎么进行限流。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档