3.9.2 配置JSON转换器

简介: 为优化消息序列化,采用JSON格式替代JDK默认方式。在publisher和consumer中引入Jackson依赖(若已引入web starter则无需重复添加),并配置`Jackson2JsonMessageConverter`作为消息转换器,启用自动生成消息ID。通过MQ控制台验证消息结构,并在消费者端使用Map接收发送的Object消息,确保收发一致。

3.9.2.1 引入依赖
显然,JDK序列化方式并不合适。我们希望消息体的体积更小、可读性更高,因此可以使用JSON方式来做序列化和反序列化。
在publisher和consumer两个服务的父工程中都引入依赖:


com.fasterxml.jackson.dataformat
jackson-dataformat-xml
2.9.10

注意,如果项目中引入了spring-boot-starter-web依赖,则无需再次引入Jackson依赖。
3.9.2.2 配置消息转换器
配置消息转换器,在publisher和consumer两个服务中添加一个Bean即可:
注意:MessageConverter要导入org.springframework.amqp.support.converter.MessageConverter
package com.itheima.consumer.config;

import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**

  • @author Mr.M
  • @version 1.0
  • @description mq配置类
  • @date 2024/8/13 19:28
    */
    @Configuration
    public class MesaageConfig {

    @Bean
    public MessageConverter messageConverter() {

     // 定义消息转换器
     Jackson2JsonMessageConverter jackson2JsonMessageConverter = new Jackson2JsonMessageConverter();
     //设置消息id,自动生成一个id,可用于消息幂等性处理
     jackson2JsonMessageConverter.setCreateMessageIds(true);
     return jackson2JsonMessageConverter;
    

    }
    }
    3.9.2.3 测试
    此时,我们到MQ控制台删除object.queue中的旧的消息。然后再次执行刚才的消息发送的代码,到MQ的控制台查看消息结构:

3.9.3 消费者接收Object
我们在consumer服务中定义一个新的消费者,publisher是用Map发送,那么消费者也一定要用Map接收,格式如下:
@RabbitListener(queues = "object.queue")
public void listenSimpleQueueMessage(Map msg) throws InterruptedException {
System.out.println("消费者接收到object.queue消息:【" + msg + "】");
}
3.8 面试题
RabbitMQ 的工作模型有哪些?
如何解决MQ消息堆积问题?

相关文章
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
Java Maven
SpringBoot集成RabbitMQ-三种模式的实现
SpringBoot集成RabbitMQ-三种模式的实现
516 0
|
2月前
|
运维 安全 Devops
生产环境缺陷管理
针对大型团队多分支开发中bug协同难、易漏修漏发等问题,我们基于go-git打造了通用型工具git-poison,实现分布式、自动化bug追溯与管理。通过“投毒-解毒-银针”机制,精准阻塞带未修复bug的发布,避免人为疏漏导致的生产故障,显著降低沟通成本,提升发布安全与效率,已在百人团队落地验证。
|
2月前
|
消息中间件 运维 Java
3.6.基于注解声明队列和交换机
通过SpringAMQP,程序可自动声明队列和交换机,避免手动配置出错。支持@Bean方式和更简洁的@RabbitListener注解方式,实现启动时自动创建。同时,默认JDK序列化存在体积大、不安全等问题,需优化消息转换器。
|
XML 前端开发 Java
还不会SpringBoot项目模块分层?来这手把手教你
本文详细介绍了如何为SpringBoot项目创建模块并进行合理的分层设计。通过逐步演示,从创建项目到构建各功能模块,再到具体代码实现,手把手教你实现整洁的代码分层。主要内容包括:创建依赖层、主启动层、模块层及其子模块(如共通层、控制器层、数据持久层等),并通过实例演示了从前端请求到后台服务调用的实际流程。适合SpringBoot初学者及有一定经验但需优化项目结构的开发者参考。
2640 2
还不会SpringBoot项目模块分层?来这手把手教你
|
3月前
|
监控 数据挖掘 API
​​​​​​​闲鱼平台根据商品ID获取商品详情的API接口实现
本文介绍如何通过闲鱼开放平台API,根据商品ID获取商品详情。涵盖接口调用流程、参数说明、签名生成、Python示例及注意事项,助力开发者实现数据采集与分析,构建价格监控、信息聚合等应用。
596 0
|
druid Java 关系型数据库
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
3565 5
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
32206 0
|
监控 druid Java
Spring Boot3整合Druid(监控功能)
Spring Boot3整合Druid(监控功能)
1224 1
|
监控 安全 测试技术
我们为什么要API管理系统呢?
API 管理系统通过接口标准化与复用、简化开发流程、版本管理、监控与预警、访问控制、数据加密、安全审计、集中管理与共享、协作开发、快速对接外部系统和数据驱动的决策等多方面优势,显著提高开发效率、增强系统可维护性、提升系统安全性、促进团队协作与沟通,并支持业务创新与扩展。