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

原创 2018年04月16日 16:44:43

消息确认
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

rabbitmq 消息确认机制

rabbitmq的消息确认机制分两部分 一部分是生产端,一部分是消费端 以下都是经过本人亲测得出的结论 环境版本: RabbitMQ 3.6.3, Erlang 19.0  rabbitmq-jav...
  • stonexmx
  • stonexmx
  • 2016-07-12 08:48:34
  • 6627

spring rabbitmq 消息确认机制和事务支持

spring rabbitmq 消息确认机制和事务支持
  • convict_eva
  • convict_eva
  • 2016-09-05 17:35:49
  • 5267

RabbitMQ之消息确认机制(事务+Confirm)

概述 在使用RabbitMQ的时候,我们可以通过消息持久化操作来解决因为服务器的异常奔溃导致的消息丢失,除此之外我们还会遇到一个问题,当消息的发布者在将消息发送出去之后,消息到底有没有正确到达bro...
  • u013256816
  • u013256816
  • 2017-02-17 16:33:09
  • 21361

RabbitMQ(四)消息确认(发送确认,接收确认)

前面几篇记录了收发消息的demo,今天记录下关于 消息确认方面的 问题. 下面是几个问题: 1.为什么要进行消息确认? 2.rabbitmq消息确认 机制是什么样的? 3.发送方如何确认消息发送成功?...
  • qq315737546
  • qq315737546
  • 2017-01-07 19:30:04
  • 13618

RabbitMQ消息确认(发送确认,接收确认)

消息确认 每个 Consumer 可能需要一段时间才能处理完收到的数据。如果在这个过程中,Consumer 出错或异常退出,而数据还没有处理完成,那么这段数据就丢失了。因为我们采用 no-ack...
  • zhousenshan
  • zhousenshan
  • 2017-12-12 23:15:13
  • 540

RabbitMQ入门教程(十二):消息确认Ack

一:消费者确认消费者确认或者说消费者应答指的是RabbitMQ需要确认消息到底有没有被收到 - 自动应答boolean autoAck = true; channel.basicConsume(QU...
  • vbirdbest
  • vbirdbest
  • 2017-12-03 12:45:37
  • 978

rabbitmq 工作队列 java 实现

  • 2016年08月23日 17:33
  • 11KB
  • 下载

rabbitmq消息重新入队和消息确认

消息确认 当生产者投递消息到消费者broker会立即从内存中将消息删除,在这种情况下,杀掉一个消费者将会丢失消息。 为了确认消息不会丢失,rabbitmq支持message acknowledgm...
  • qq_22978533
  • qq_22978533
  • 2017-05-05 10:24:50
  • 618

(六)RabbitMQ消息队列-消息任务分发与消息ACK确认机制(PHP版)

在前面一章介绍了在PHP中如何使用RabbitMQ,至此入门的的部分就完成了,我们内心中一定还有很多疑问:如果多个消费者消费同一个队列怎么办?如果这几个消费者分任务的权重不同怎么办?怎么把同一个队列不...
  • Super_RD
  • Super_RD
  • 2017-04-26 12:11:34
  • 2140

第4篇 rabbitmq可靠确认模式的java封装及示例

对rabbitmq的封装,有几个目标: 1 提供send接口 2 提供consume接口 3 保证消息的事务性处理 所谓事务性处理,是指对一个消息的处理必须严格可控,必须满足原子性,只有两种可能的处...
  • u010753907
  • u010753907
  • 2017-06-07 17:57:55
  • 603
收藏助手
不良信息举报
您举报文章:Java使用RabbitMQ(三)--消息确认
举报原因:
原因补充:

(最多只允许输入30个字)