Rabbit发送消息,消费者消费异常
Rabbit发送消息,消费者消费异常
背景:
在步骤1下创建订单,步骤2下提交消息
@Transactionalpublic void tradeHandler(Map map) {// 1.生成统一订单
var unifyOrder = orderService.create(orderService.getUnifyOrderDTO(fee, alipayOrder));
//2.充值通知+首充赠送礼
rabbitTemplate.convertAndSend(ChargeQueueConfig.EXCHANGE_NAME, ChargeQueueConfig.QUEUE_NAME, unifyOrder.getId());
}
原因:事务导致数据未提交,消费者监听到消息,使用订单ID查询订单失败
解决:直接提交unifyOrder对象,消费者直接使用创建的order
(注意:如果在received 中还像第一版直接转自定义对象,消息进程会报错)
解决方案是使用Jackson2JsonMessageConverter 。在发送消息时,它会先将自定义的消息类序列化成json格式,再转成byte构造 Message
//发送 设置Converter@Beanpublic RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {RabbitTemplate template = new RabbitTemplate(connectionFactory);template.setMessageConverter(new Jackson2JsonMessageConverter());return template;}@Beanpublic SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setMessageConverter(new Jackson2JsonMessageConverter());return factory;}//消费时 指定Converter@RabbitListener(bindings = {@QueueBinding(value = @Queue(value = "queue-order"),exchange = @Exchange(value = "exchange-order"),key = "rkey-order")},containerFactory="rabbitListenerContainerFactory")
参考:https://www.cnblogs.com/timseng/p/11688019.html
Rabbit发送消息,消费者消费异常相关推荐
- RocketMQ发送消息和消费消息
RocketMQ发送消息和消费消息 一.使用前配置 二.启动命令 三.pom.xml文件配置 四.编码 4.1 先定义一个消息保存的载体: 4.2 定义消息的发送者: 4.3 定义消息的消费者: 五 ...
- kafka 基础概念、命令行操作(查看所有topic、创建topic、删除topic、查看某个Topic的详情、修改分区数、发送消息、消费消息、 查看消费者组 、更新消费者的偏移位置)
文章目录 前言 1. 基础概念 Broker Producer Consumer Consumer Group Topic Partition Replica 2. 命令行操作 2.1 查看所有top ...
- 【kafka连载四】window系统python环境发送消息和消费消息
前提 1.已安装kafka-python模块 2.已启动zookeeper服务 3.已启动kafka服务 一.编辑发送消息code #coding=utf-8from kafka import Kaf ...
- RabbitMQ与SpringMVC集成并实现发送消息和接收消息(持久化)方案一
RabbitMQ是用于应用程序之间或者程序的不同组件之间的消息通信,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量,也就是生产-消费模型,一端往消息队列中 ...
- rabbitmq 不同的消费者消费同一个队列_消息队列王者--rabbitMQ深入理解--工作过程、消费模式、持久化等...
概述 之前已经对rabbitMQ的一些基本概念做了介绍和不同MQ之间的比较,今天主要对rabbitMQ的一些方面做扩展. 01 消息队列 Broker:简单来说就是消息队列服务器实体. Exchang ...
- RabbitMQ消息队列,发送消息失败、消息持久化、消费者失败处理方法和发送消息
项目是使用springboot项目开发的,前是代码实现,后面有分析发送消息失败.消息持久化.消费者失败处理方法和发送消息解决方法及手动确认的模式 先引入pom.xml <!--rabbitmq- ...
- activeMQ高并发发送消息异常解决方法
高并发发送消息异常解决方法: 现象:使用10个线程每100ms发送一条消息,大约3000多条后,出现异常,所有线程停 止: javax.jms.JMSException:Could not conne ...
- kafka 脚本发送_Kafka笔记归纳(第五部分:一致性保证,消息重复消费场景及解决方式)...
写在开头: 本章是Kafka学习归纳第五部分,着重于强调Kafka的事一致性保证,消息重复消费场景及解决方式,记录偏移量的主题,延时队列的知识点. 文章内容输出来源:拉勾教育大数据高薪训练营. 一致性 ...
- mq多个消费者消费一个消息_ActiveMQ多个消费者消费不均匀问题
如果客户端处理很慢的话,Broker会在之前发送消息的反馈之前,继续发送新的消息到客户端.如果客户端依旧很慢的话,没有得到确认反馈的消息会持续增长.在这种情况下,Broker有可能会停止发送消息给消费 ...
最新文章
- 在Horizon Workspace中配置Windows单点登录-进阶篇
- filebeat成精之路
- UI第九节——UIProgressView
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- 我理解消化后的浮点数存储
- lvs增加并发连接,解决因为哈希表过小导致软中断过高问题
- linux标准输入输出21
- 解决UnicodeEncodeError。python的docker镜像增加locale 中文支持
- 基于visual Studio2013解决C语言竞赛题之1077大数相加
- Delphi GDI对象之绘制文本
- android沉浸状态栏工具,Android 状态栏工具——一行代码实现状态栏...
- 【Unity3D】动态更换天空盒(场景不受天空盒影响 等问题)
- React 18 新特性
- window里dig命令跟踪域名DNS解析
- 0CTF-babyheap2017祥讲
- rual 1741. Communication Fiend
- 【uni-app】模仿微信实现简易发送/取发语音功能
- 2021年R2移动式压力容器充装报名考试及R2移动式压力容器充装操作证考试
- 《BPF( 伯克利数据包过滤器 ) Performance Tools》 第六章 CPU
- 求助:hmailserver+roundcube启用密码插件后,用户无法修改密码问题
热门文章
- VSRE的完整形式是什么?
- python公共变量_Python中的公共变量
- treeset java_Java TreeSet last()方法与示例
- Java LineNumberReader getLineNumber()方法及示例
- Java类class isAnnotationPresent()方法与示例
- 计算机网络怎么寻址_计算机网络中的无类寻址
- 程序员精美简历Top榜—面试必备
- the development of c language(转)
- 阿里云服务器Debian11系统安装Linux宝塔面板 搭建WordPress个人博客
- L-BFGS算法/Broyden族/BFGS算法/阻尼牛顿法的Python实现代码