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发送消息,消费者消费异常相关推荐

  1. RocketMQ发送消息和消费消息

    RocketMQ发送消息和消费消息 一.使用前配置 二.启动命令 三.pom.xml文件配置 四.编码 4.1 先定义一个消息保存的载体: 4.2 定义消息的发送者: 4.3 定义消息的消费者: 五 ...

  2. kafka 基础概念、命令行操作(查看所有topic、创建topic、删除topic、查看某个Topic的详情、修改分区数、发送消息、消费消息、 查看消费者组 、更新消费者的偏移位置)

    文章目录 前言 1. 基础概念 Broker Producer Consumer Consumer Group Topic Partition Replica 2. 命令行操作 2.1 查看所有top ...

  3. 【kafka连载四】window系统python环境发送消息和消费消息

    前提 1.已安装kafka-python模块 2.已启动zookeeper服务 3.已启动kafka服务 一.编辑发送消息code #coding=utf-8from kafka import Kaf ...

  4. RabbitMQ与SpringMVC集成并实现发送消息和接收消息(持久化)方案一

    RabbitMQ是用于应用程序之间或者程序的不同组件之间的消息通信,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量,也就是生产-消费模型,一端往消息队列中 ...

  5. rabbitmq 不同的消费者消费同一个队列_消息队列王者--rabbitMQ深入理解--工作过程、消费模式、持久化等...

    概述 之前已经对rabbitMQ的一些基本概念做了介绍和不同MQ之间的比较,今天主要对rabbitMQ的一些方面做扩展. 01 消息队列 Broker:简单来说就是消息队列服务器实体. Exchang ...

  6. RabbitMQ消息队列,发送消息失败、消息持久化、消费者失败处理方法和发送消息

    项目是使用springboot项目开发的,前是代码实现,后面有分析发送消息失败.消息持久化.消费者失败处理方法和发送消息解决方法及手动确认的模式 先引入pom.xml <!--rabbitmq- ...

  7. activeMQ高并发发送消息异常解决方法

    高并发发送消息异常解决方法: 现象:使用10个线程每100ms发送一条消息,大约3000多条后,出现异常,所有线程停 止: javax.jms.JMSException:Could not conne ...

  8. kafka 脚本发送_Kafka笔记归纳(第五部分:一致性保证,消息重复消费场景及解决方式)...

    写在开头: 本章是Kafka学习归纳第五部分,着重于强调Kafka的事一致性保证,消息重复消费场景及解决方式,记录偏移量的主题,延时队列的知识点. 文章内容输出来源:拉勾教育大数据高薪训练营. 一致性 ...

  9. mq多个消费者消费一个消息_ActiveMQ多个消费者消费不均匀问题

    如果客户端处理很慢的话,Broker会在之前发送消息的反馈之前,继续发送新的消息到客户端.如果客户端依旧很慢的话,没有得到确认反馈的消息会持续增长.在这种情况下,Broker有可能会停止发送消息给消费 ...

最新文章

  1. 在Horizon Workspace中配置Windows单点登录-进阶篇
  2. filebeat成精之路
  3. UI第九节——UIProgressView
  4. Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
  5. 我理解消化后的浮点数存储
  6. lvs增加并发连接,解决因为哈希表过小导致软中断过高问题
  7. linux标准输入输出21
  8. 解决UnicodeEncodeError。python的docker镜像增加locale 中文支持
  9. 基于visual Studio2013解决C语言竞赛题之1077大数相加
  10. Delphi GDI对象之绘制文本
  11. android沉浸状态栏工具,Android 状态栏工具——一行代码实现状态栏...
  12. 【Unity3D】动态更换天空盒(场景不受天空盒影响 等问题)
  13. React 18 新特性
  14. window里dig命令跟踪域名DNS解析
  15. 0CTF-babyheap2017祥讲
  16. rual 1741. Communication Fiend
  17. 【uni-app】模仿微信实现简易发送/取发语音功能
  18. 2021年R2移动式压力容器充装报名考试及R2移动式压力容器充装操作证考试
  19. 《BPF( 伯克利数据包过滤器 ) Performance Tools》 第六章 CPU
  20. 求助:hmailserver+roundcube启用密码插件后,用户无法修改密码问题

热门文章

  1. VSRE的完整形式是什么?
  2. python公共变量_Python中的公共变量
  3. treeset java_Java TreeSet last()方法与示例
  4. Java LineNumberReader getLineNumber()方法及示例
  5. Java类class isAnnotationPresent()方法与示例
  6. 计算机网络怎么寻址_计算机网络中的无类寻址
  7. 程序员精美简历Top榜—面试必备
  8. the development of c language(转)
  9. 阿里云服务器Debian11系统安装Linux宝塔面板 搭建WordPress个人博客
  10. L-BFGS算法/Broyden族/BFGS算法/阻尼牛顿法的Python实现代码