本文是《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 删除。