美文网首页从零学Java笔录凯哥Java-工作总结
RabbitMQ系列教程 高级篇六 消费端自定义监听

RabbitMQ系列教程 高级篇六 消费端自定义监听

作者: 凯哥Java | 来源:发表于2019-07-28 08:23 被阅读0次

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

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

相关文章

网友评论

    本文标题:RabbitMQ系列教程 高级篇六 消费端自定义监听

    本文链接:https://www.haomeiwen.com/subject/opcurctx.html