首先我们在Spring.xml中配置相关的消费者

在配置的时候可以指定是手动确认还是自动的确认,比如:

<!-- 定义消息监听队列 --><rabbit:queue id="chatqueue2" durable="true" auto-delete="false" exclusive="false" name="chatqueue2" />  <rabbit:listener-container connection-factory="connectionFactory" acknowledge="manual" ><rabbit:listener queues="chatqueue2" ref="receiveConfirmListener" /></rabbit:listener-container>

这个地方acknowledge=“manual”标识的是消息确认机制为手动的确认

那么我们在消费者中就需要手动的确认消息是否收到

消费者如下定义:

import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
import org.springframework.stereotype.Service;import com.rabbitmq.client.Channel;@Service("receiveConfirmListener")
public class ReceiveConfirmListener implements ChannelAwareMessageListener {@Overridepublic void onMessage(Message message, Channel channel) throws Exception {System.out.println("---------");channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);}}

这个里面有一个channel.basicAck 这个就是手动确认的函数

如果我们不在消费者中调用这个函数,那么rabbitmq就会一直的推送消息给消费者

也是就是说上面的输出语句会被重复的执行

如果执行了这个手动确认之后,rabbitmq就不会向这个消费者推送消息了

channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);

函数的第二个参数boolean标识的是如果为true标识所有的消费者都已经收到了这个消息,如果为false标识仅仅是当前的消费这个收到的这个消息

如果是是一个消费者,自然是true和false都是一样的

希望对你有所帮助

Spring rabbitmq消息机制--手动确认相关推荐

  1. RabbitMQ消息接收的确认方式

    一.消息接收手工确认 消息从队列推送至消费者后,消息被消费,并从队列中移除.若在消费者消费消息的过程中出现异常或回滚,当消费者从异常中恢复后,想要重新处理异常的消息,然而消息已经从队列中移除,无法再次 ...

  2. Rabbitmq消息的Confirm确认机制

    队列满了和网络闪断都会导致消息没有成功投递到Broker服务器

  3. RabbitMQ手动确认模式(项目开发常用模式)

    RabbitMQ 手动确认模式(日常项目开发常用模式) 借鉴导言 架构及工作原理 项目开发使用(公司常用) 借鉴导言 此文借鉴多名CSDN用户博客,并将其博文中关于MQ常用的点,进行了归纳整理 借鉴博 ...

  4. rabbitmq 手动提交_第四章----SpringBoot+RabbitMQ发送确认和消费手动确认机制

    1. 配置RabbitMQ # 发送确认 spring.rabbitmq.publisher-confirms=true # 发送回调 spring.rabbitmq.publisher-return ...

  5. rabbitmq-消息可靠传递-消息确认机制,手动确认,针对消费者方向(七)

    基于spring整合的rabbitmq <!--定义监听器容器,监听的是test_queue_confirm这个队列acknowledge="manual":手动签收--&g ...

  6. RabbitMQ消息确认机制

    文章目录 1. 事务机制 2. Confirm模式 2.1 生产者 2.1.1 普通Confirm模式 2.1.2 批量Confirm模式 2.1.3 异步Confirm模式 2.2 消费者 3. 其 ...

  7. RabbitMQ消息确认机制和消息重发机制

    一.机制 首先我们要知道一条消息的传递过程. 生产者 -> 交换机 ->  队列 我们的生产者生产消息,生产完成的消息发送到交换机,由交换机去把这个消息转发到对应的队列上.这其中我们可能在 ...

  8. RabbitMQ消息确认机制-可靠抵达

    消息发送到被消费的流程: JAVA的生产端的发送数据----->Broker(消息服务器)-------->达到Exchange交换机------------->通过路由键到达Que ...

  9. rabbitmq消息队列 ack机制(消息确认机制)和消息补偿机制

    参考:https://blog.csdn.net/pan_junbiao/article/details/112956537 ack 机制就是消息在 生产者在发布消息以后,消息存在内存中,如果消息被确 ...

最新文章

  1. Day-16 面向对象03 类与类之间的关系
  2. 梯度提升树算法原理小结
  3. STS中applicationContext.xml配置文件
  4. java内存分配 常量池详解
  5. python中numpy模块的around方法_Python numpy.around()用法及代码示例
  6. 华中科技大学计算机学院2020直博生名单,华中科技大学各院系2020年博士研究生“申请-考核”制拟录取名单公示...
  7. java内存模型概述_Java内存模型-快速概述和注意事项
  8. 我发现不少大有课堂的年轻学员确实在做自媒体
  9. “在 GitHub 用十年攒的 54k+ Star,一个误操全没了”
  10. Machine Learning(Andrew)Week6(上)
  11. 2019 ,我的新年Flag
  12. CKEditor、UEditor富文本编辑器原理(CSDN编辑器原理)
  13. 呼吸流水灯c语言程序,单片机流水灯与呼吸灯结合-滴水灯程序及详细教程
  14. 数据安全技术专利态势分析
  15. 路由器自动连接服务器无响应,路由器服务器无响应怎么办
  16. ios禁止屏幕旋转的几种方法
  17. oracle 省份三个字的,全国省市区县数据库-省份(全)
  18. 西班牙首相被中国新零售圈粉!天猫总裁靖捷透露了一个“合伙人计划”
  19. SRGAN 论文学习
  20. invalidate()和postInvalidate() 的区别及使用

热门文章

  1. linux系统性能监控命令uptime(六)
  2. codeigniter配置smarty模板
  3. MySQL番外篇:一条SQL查询语句是如何执行的?
  4. 为什么Eureka比ZooKeeper更适合做注册中心?
  5. MySQL:互联网公司常用分库分表方案汇总!
  6. CTO丢给我《技术Leader的30条军规》:照着做,做不好滚回去写代码!
  7. 最近面试一个6年 Java程序员,一个问题都答不上!
  8. 【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)
  9. 国内有没有能媲美Jira的测试管理工具?我们找国内产品来测评一下
  10. 管理“95后”,切记这3点