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连接丢失。

阅读更多
想对作者说点什么?

博主推荐

换一批

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