RABBITMQ学习系列教程

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重回队列等场景中都要用它来标识具体是哪一条消息。

相关推荐