Spring rabbitmq消息机制--手动确认
首先我们在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消息机制--手动确认相关推荐
- RabbitMQ消息接收的确认方式
一.消息接收手工确认 消息从队列推送至消费者后,消息被消费,并从队列中移除.若在消费者消费消息的过程中出现异常或回滚,当消费者从异常中恢复后,想要重新处理异常的消息,然而消息已经从队列中移除,无法再次 ...
- Rabbitmq消息的Confirm确认机制
队列满了和网络闪断都会导致消息没有成功投递到Broker服务器
- RabbitMQ手动确认模式(项目开发常用模式)
RabbitMQ 手动确认模式(日常项目开发常用模式) 借鉴导言 架构及工作原理 项目开发使用(公司常用) 借鉴导言 此文借鉴多名CSDN用户博客,并将其博文中关于MQ常用的点,进行了归纳整理 借鉴博 ...
- rabbitmq 手动提交_第四章----SpringBoot+RabbitMQ发送确认和消费手动确认机制
1. 配置RabbitMQ # 发送确认 spring.rabbitmq.publisher-confirms=true # 发送回调 spring.rabbitmq.publisher-return ...
- rabbitmq-消息可靠传递-消息确认机制,手动确认,针对消费者方向(七)
基于spring整合的rabbitmq <!--定义监听器容器,监听的是test_queue_confirm这个队列acknowledge="manual":手动签收--&g ...
- RabbitMQ消息确认机制
文章目录 1. 事务机制 2. Confirm模式 2.1 生产者 2.1.1 普通Confirm模式 2.1.2 批量Confirm模式 2.1.3 异步Confirm模式 2.2 消费者 3. 其 ...
- RabbitMQ消息确认机制和消息重发机制
一.机制 首先我们要知道一条消息的传递过程. 生产者 -> 交换机 -> 队列 我们的生产者生产消息,生产完成的消息发送到交换机,由交换机去把这个消息转发到对应的队列上.这其中我们可能在 ...
- RabbitMQ消息确认机制-可靠抵达
消息发送到被消费的流程: JAVA的生产端的发送数据----->Broker(消息服务器)-------->达到Exchange交换机------------->通过路由键到达Que ...
- rabbitmq消息队列 ack机制(消息确认机制)和消息补偿机制
参考:https://blog.csdn.net/pan_junbiao/article/details/112956537 ack 机制就是消息在 生产者在发布消息以后,消息存在内存中,如果消息被确 ...
最新文章
- Day-16 面向对象03 类与类之间的关系
- 梯度提升树算法原理小结
- STS中applicationContext.xml配置文件
- java内存分配 常量池详解
- python中numpy模块的around方法_Python numpy.around()用法及代码示例
- 华中科技大学计算机学院2020直博生名单,华中科技大学各院系2020年博士研究生“申请-考核”制拟录取名单公示...
- java内存模型概述_Java内存模型-快速概述和注意事项
- 我发现不少大有课堂的年轻学员确实在做自媒体
- “在 GitHub 用十年攒的 54k+ Star,一个误操全没了”
- Machine Learning(Andrew)Week6(上)
- 2019 ,我的新年Flag
- CKEditor、UEditor富文本编辑器原理(CSDN编辑器原理)
- 呼吸流水灯c语言程序,单片机流水灯与呼吸灯结合-滴水灯程序及详细教程
- 数据安全技术专利态势分析
- 路由器自动连接服务器无响应,路由器服务器无响应怎么办
- ios禁止屏幕旋转的几种方法
- oracle 省份三个字的,全国省市区县数据库-省份(全)
- 西班牙首相被中国新零售圈粉!天猫总裁靖捷透露了一个“合伙人计划”
- SRGAN 论文学习
- invalidate()和postInvalidate() 的区别及使用