Rabbit发送消息,消费者消费异常
生活随笔
收集整理的這篇文章主要介紹了
Rabbit发送消息,消费者消费异常
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Rabbit發(fā)送消息,消費(fèi)者消費(fèi)異常
背景:
在步驟1下創(chuàng)建訂單,步驟2下提交消息
原因:事務(wù)導(dǎo)致數(shù)據(jù)未提交,消費(fèi)者監(jiān)聽到消息,使用訂單ID查詢訂單失敗
解決:直接提交unifyOrder對(duì)象,消費(fèi)者直接使用創(chuàng)建的order
(注意:如果在received 中還像第一版直接轉(zhuǎn)自定義對(duì)象,消息進(jìn)程會(huì)報(bào)錯(cuò))
解決方案是使用Jackson2JsonMessageConverter 。在發(fā)送消息時(shí),它會(huì)先將自定義的消息類序列化成json格式,再轉(zhuǎn)成byte構(gòu)造 Message
//發(fā)送 設(shè)置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;}//消費(fèi)時(shí) 指定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
總結(jié)
以上是生活随笔為你收集整理的Rabbit发送消息,消费者消费异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jenkins使用哪个版本号_Linux
- 下一篇: html如何做卷展菜单,3DMax“对象