RabbitMQ传递序列化/反序列化自定义对象时踩坑

ops/2025/1/15 21:32:55/

问题1

错误信息:

java.lang.IllegalArgumentException: SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.hmall.api.dto.CartRemoveDTO

错误信息提示:RabbitMQ默认的消息转换器SimpleMessageConverter 无法对自定义对象生效;
解决方法:
让自定义对象实现Serializable接口,并配置消息转换器,生产者方和消费者方都要配置,如下所示:

java">    @Beanpublic MessageConverter messageConverter(){return new Jackson2JsonMessageConverter();}

问题2

错误信息:

Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.hmall.api.dto.CartClearDTO` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)at [Source: (String)"{"userId":1,"itemIds":[1533902]}"; line: 1, column: 2]at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67) ~[jackson-databind-2.13.5.jar:2.13.5]at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1904) ~[jackson-databind-2.13.5.jar:2.13.5]at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400) ~[jackson-databind-2.13.5.jar:2.13.5]at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1349) ~[jackson-databind-2.13.5.jar:2.13.5]at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1415) ~[jackson-databind-2.13.5.jar:2.13.5]at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:352) ~[jackson-databind-2.13.5.jar:2.13.5]at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) ~[jackson-databind-2.13.5.jar:2.13.5]at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) ~[jackson-databind-2.13.5.jar:2.13.5]at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674) ~[jackson-databind-2.13.5.jar:2.13.5]at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3629) ~[jackson-databind-2.13.5.jar:2.13.5]

错误提示在jackson方式反序列化时出现了错误,查阅得知,自定义对象只添加了@Data注解,而jackson的反序列化需要无参构造函数,
解决方法:
给自定义对象添加@NoArgsConstructor注解或者配置无参构造器。

参考链接:Jackson反序列化报错


http://www.ppmy.cn/ops/16521.html

相关文章

PHP安装dbase扩展,2024最新安装日志,注意PHP版本、扩展目录路径、文件权限3个大坑

今天在我的免费云服务器,阿贝云上安装dbase扩展。系统是centos,安装好了宝塔面板。 第一步, yum install php-pear pecl install dbase (显示Installing ‘/usr/lib64/php/modules/dbase.so’ install ok: channel://pecl.php.net…

稳态视觉诱发电位 (SSVEP) 分类学习系列 (2) :EEGNet

稳态视觉诱发电位分类学习系列:EEGNet 0. 引言1. 主要贡献2. 提出的方法3. 结果3.1 Compact-CNN 优于 CCA 和 Combined-CCA3.2 Compact-CNN提取窄带频率活动3.3 Compact-CNN揭示了类之间的差异 4. 总结欢迎来稿 论文地址:https://iopscience.iop.org/article/10.108…

【ensp实验】Telnet 协议

目录 Telnet 协议 telnet协议特点 Telnet实验 ​编辑 不使用console口 三种认证模式的区别 Telnet 协议 Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用…

Kotlin作用域函数引发的遮蔽问题

前面讲了kotlin的it变量引起的遮蔽问题,见Kotlin it隐式变量的遮蔽问题,本篇聊聊作用域函数(scoped function)可能引起的遮蔽问题。 先来看一个简单的示例: fun test(): String {val s: String "asdf".al…

《前端面试题》- React - 如何区分函数组件和类组件

问题 如何区分函数组件和类组件? 答案 可以使用instanceof 或者Component.prototype.isReactComponent。 示例 函数组件 export default function FunctionComonent() {if(FunctionComonent.prototype.isReactComponent){console.log(FunctionComonent是类组件…

GRE技术原理:揭开网络封装的神秘面纱

GRE技术原理:揭开网络封装的神秘面纱 概述 本文将深入探讨GRE(Generic Routing Encapsulation,通用路由封装)技术的原理。我们将从GRE的基本概念出发,分析其在网络中的应用场景,详细阐述其封装与解封装过…

推荐一个带java环境的tomcat镜像,使用jdk 1.8.0_312

镜像名称和版本:tomcat:10.0-jdk8拉取命令:docker pull tomcat:10.0-jdk8镜像tar包(百度网盘): 链接:https://pan.baidu.com/s/1TM8k7Z97NYhahCrrTh3vBw?pwdrq93 提取码:rq93docker启动命令&am…

Golang实现一个批量自动化执行树莓派指令的软件(5)模块整合

简介 基于上篇 Golang实现一个批量自动化执行树莓派指令的软件(4)上传 已经实现了ssh的基本操作模块了,这里我们将这些模块进行整合。 环境描述 运行环境: Windows, 基于Golang, 暂时没有使用什么不可跨平台接口, 理论上支持Linux…