RabbitMQ消息中间件技术精讲13 高级篇六 消费端自定义监听
RabbitMQ消息中间件技术精讲13高级篇六消费端自定义监听在之前的代码中我们一般就是在代码中写while循环,进行consumer.nexDelivery方法进行获取下一条消息,然后进行消费处理。但是在工作中,我们一般使用自定义的Consumer更加的方便,解耦性更加的强。代码如下:自定义消费监听类完整代码:publicclass MyConsumer extends&nb
RabbitMQ消费端推荐用自定义监听替代while循环:新建类继承DefaultConsumer并重写handleDelivery方法,方法内可拿到consumerTag、envelope、properties和body消息体,再在basicConsume时传入该实例即可消费消息,比while循环加consumer.nextDelivery轮询的方式解耦性更强,envelope中的deliveryTag是消息唯一标签,确认消息时会用到。
- 自定义消费者需继承DefaultConsumer并重写handleDelivery方法
- handleDelivery可获取consumerTag、Envelope、BasicProperties和body
- envelope中的deliveryTag是消息唯一标签,消息确认时会用到
- 自定义监听替代while循环加nextDelivery,解耦性更强
本文是《RabbitMQ系列教程》中的十三篇:RabbitMQ消息中间件技术精讲13 高级篇六 消费端自定义监听。如果对RabbitMQ感兴趣的同学,建议从第一篇开始
在之前的代码中我们一般就是在代码中写while循环,进行consumer.nexDelivery方法进行获取下一条消息,然后进行消费处理。
但是在工作中,我们一般使用自定义的Consumer更加的方便,解耦性更加的强。
代码如下:
自定义消费监听类完整代码:
public class MyConsumer extends DefaultConsumer {
public MyConsumer(Channel channel) {
super(channel);
}
/**
*
* @param consumerTag 消费标签
原创不易,完成人机校验,阅读全文
常见问题
RabbitMQ自定义消费者类怎么实现?
写一个类继承DefaultConsumer,构造方法传入Channel,重写handleDelivery方法处理消息,最后在channel.basicConsume时把该实例作为消费者传入即可。
deliveryTag有什么作用?
deliveryTag是envelope对象中携带的消息唯一标签,在消费端ACK消息确认、Nack重回队列等场景中都要用它来标识具体是哪一条消息。
相关推荐
RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲7 发送自定义属性消息RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲10 高级篇三 幂等性保障不重复消费RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲15 高级篇八 消费端ACK与重回队列RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲12 高级篇五 return消息机制RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲17 高级篇十 死信队列RABBITMQ学习系列教程RabbitMQ消息中间件技术精讲6 几种交换机总结RABBITMQ学习系列教程RabbitMQ消高级篇七 消费端限流息中间件技术精讲14