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

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

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭