Java使用RabbitMQ(三)--消息确认

消息确认
RabbitMQ 每将一个消息交付给一个消费者时,会立刻把这个消息标记为被删除,如果消费者在处理消息时怠机了,那么这个消息就彻底消失了,这很明显不符合我们的期望,我们希望在一个消费者怠机时,把这个消息交付给其他消费者处理。
所以 RabbitMQ 让消费者在处理完消息后,返回确认消息,告知RabbitMQ 你确实可以删除这条消息了。
也就是

channel.basicConsume(TASK_QUEUE_NAME, autoAck, consumer);

或者

try {
      doWork(message);
    } finally {
      System.out.println(" [x] Done");
      channel.basicAck(envelope.getDeliveryTag(), false);
    }

给RabbitMQ 发送确认消息的通道,和接收这条消息的信道必须是同一条通道。否则会抛出异常,所以channel不能变。

RabbitMQ判断一个消费者死亡的依据是:通道关闭,连接关闭或者TCP连接丢失。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ljz2016/article/details/79962754
文章标签: java
个人分类: MQ
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭