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】)
在下一节课中,我们将讲解一个重要的知识点:消费端怎么进行限流。