RabbitMQ消息中间件技术精讲13 高级篇六 消费端自定义监听

简介 RabbitMQ消息中间件技术精讲13高级篇六消费端自定义监听在之前的代码中我们一般就是在代码中写while循环,进行consumer.nexDelivery方法进行获取下一条消息,然后进行消费处理。但是在工作中,我们一般使用自定义的Consumer更加的方便,解耦性更加的强。代码如下:自定义消费监听类完整代码:publicclass MyConsumer extends&nb

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

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


Top Top