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

本文是《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】)

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

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和PYTHON有个约会

大牧絮叨设计模式:工厂方法模式

工厂方法模式是一种创建模式,又被称为虚拟构造子模式(Virtual Constructor)或者多态性工厂模式(Polymoriphoic Factory)。工...

10220
来自专栏Java后端技术栈cwnait

Java 线程池架构原理和源码解析(ThreadPoolExecutor)

使用Executors最常用的莫过于是使用:Executors.newFixedThreadPool(int)这个方法,因为它既可以限制数量,而且线程用完后不会...

9220
来自专栏数据结构笔记

使用idea配置Android开发环境

安装好IDEA之后安装JDK,版本要 1.8以上(也就是JAVA SE 8及以上),这里推荐安装 JAVA SE 8,因为我安装的就是8,之前的10一直有问题。...

1.7K30
来自专栏大数据实战演练

Kafka消费者 之 如何进行消息消费

放弃不难,但坚持很酷~由于消费者模块的知识涉及太多,所以决定先按模块来整理知识,最后再进行知识模块汇总。

86230
来自专栏Happy的分享

Java中的transient关键字

之前写过一篇序列化相关的文章,今天要讲的这个文件自transient也是跟序列化有关系的。但是,挺多人没有了解过该关键字甚至是不知道该关键字的存在。

5820
来自专栏挨踢小子部落阁

深入理解synchronized底层原理,一篇文章就够了!

如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,我们需要对线程进行同步,那么synchronized就是实现线程同步的关键字,可以说在并发控...

21020
来自专栏挨踢小子部落阁

巩固基础从Java集合类开始,最系统全面的集合类笔记

来源:https://blog.csdn.net/weizhengzhou520/article/details/81806539

12930
来自专栏Happy的分享

Java8新特性——Optional

在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现。Java8引入了Optional类,为的就是优雅地处理判空等问题。现在也有很多类库在使用Opti...

17830
来自专栏IT技术精选文摘

面试题:讲讲Java垃圾回收机制

本文内容是基于 JDK 1.6 的,不同版本虚拟机之间也许会有些许差异,但不影响我们对JVM垃圾回收机制的整体把握和了解。

38920
来自专栏Happy的分享

为什么阿里规约手册要求谨慎使用Arrays.asList方法

在开发中,有时候会碰到把多个参数,或者说把数组转成List的需求,通常我们会使用 Arrays.asList()方法。但是该方法在使用的过程中,稍有不慎就会出现...

4210

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励