首页 > 其他分享 >记一次springboot整合rabbitMQ的list序列化问题

记一次springboot整合rabbitMQ的list序列化问题

时间:2024-07-09 23:52:37浏览次数:14  
标签:springboot writeInEsQueue list new message 序列化 public

问题:平时传一个类的时候都会继承Serializable实现正确传输,这次我把list<Object>直接丢成了message,导致rabbitMQ不能序列化对象。报错

org.springframework.amqp.rabbit.support.ListenerExecutionFailedException: Failed to convert message

下面的整合步骤提供了解决方案:

在发送时,将list对象序列化能json字符串再发生

在接收时,反序列化中,由于java的类型擦除,我使用了TypeReference指定list的类型。当然这里需要保证其中的object是可序列化/反序列化的

 

springboot整合rabbitMQ的步骤:

1.引入pom

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

2.添加yaml配置

spring:
  rabbitmq:
    host: 192.168.88.95
    username: sunshine
    password: sunshine

3.创建生产者消费者类

生产者

@Component
public class Producer {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void send(String exchange, String routingKey, List<HistoryQuestionByAi> message){
        ObjectMapper objectMapper=new ObjectMapper();
        try{
            String jsonToString=objectMapper.writeValueAsString(message);
            rabbitTemplate.convertAndSend(exchange,routingKey,jsonToString);
        }catch (Exception e){
            throw new RuntimeException("消息发送失败");
        }

    }

}

消费者

@Component
@Slf4j
public class Consumer {
    @Autowired
    ESService esService;
    @RabbitListener(queues = "writeInEsQueue")
    public void handlerMessage(String message){
        log.info("接收到消息:{}",message);
        ObjectMapper objectMapper=new ObjectMapper();
        try {
            List<HistoryQuestionByAi>list=objectMapper.readValue(message, new TypeReference<List<HistoryQuestionByAi>>() {});

            esService.addES(list);
        }catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

配置类

@Configuration
public class RabbitMQConfig {
    @Bean
    public Queue writeInEsQueue(){
        return new Queue("writeInEsQueue");
    }

    @Bean
    public Exchange writeInEsExchange(){
        return new DirectExchange("writeInEsExchange");
    }

    @Bean
    public Binding binding(Queue writeInEsQueue,DirectExchange writeInEsExchange){
        return BindingBuilder.bind(writeInEsQueue).to(writeInEsExchange).with("writeInEsKey");
    }
}

 

标签:springboot,writeInEsQueue,list,new,message,序列化,public
From: https://www.cnblogs.com/kun1790051360/p/18292975

相关文章

  • Java毕设基于Vue+SpringBoot的汽车租赁管理系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,通过线上管理汽车租赁的方式出现......
  • Java毕设基于Vue+SpringBoot的汽车服务管理系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言随着社会的发展,汽车服务的管理形势越来越严峻。越来越多的用户利用互联网获得信息,但汽车服务信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得汽车服务信息,因此,设计一种......
  • Java毕设基于Vue+SpringBoot的校园失物招领平台(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对......
  • 基于SpringBoot+Vue+uniapp的酒店客房管理系统的详细设计和实现(源码+lw+部署文档+讲
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp的干洗店预约洗衣系统的详细设计和实现(源码+lw+部署文档+
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • Java毕设基于Vue+SpringBoot的校园台球厅人员与设备管理系统(代码+数据库+文档LW+运行
    文末获取资源,收藏关注不迷路文章目录前言主要使用技术研究内容核心代码文章目录前言在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括校园台球厅人员与设备管理系统的网络应用,在外国管理系统已经是很普遍的方式,不过国内的管理网站可能......
  • Dotnet算法与数据结构:Hashset, List对比
    哈希集A是存储唯一元素的集合。它通过在内部使用哈希表来实现这一点,该哈希表为基本操作(如添加、删除和包含)提供恒定时间平均复杂度(O(1))。此外,不允许重复元素,使其成为唯一性至关重要的场景的理想选择。另一方面,表示按顺序存储元素的动态数组。它允许重复元素并提供对元素的索引......
  • 基于Springboot的学生选课系统
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:SpringBoot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能教师管理:负责教师信息的录入、编辑、删除及权限分配......
  • Springboot引入依赖自动注入bean的实现
    简单总结springboot导入依赖后自动注册所需bean的原理0、核心@Conditional条件加载+配置文件1、@Component或者@Configuration加@Bean直接写在第三方包里,行不行,不行,因为Spring扫描注解的包不一定包含这个。默认只扫主类同级和下级的包2、使用者主动用@Import引入,这个也没......
  • springboot智慧医疗数据共享和个性化推荐系统-计算机毕业设计源码05875
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2 智慧医疗数据共享和个性化推荐系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3 系统功能分析2.3.1功能性分析2.4 系......