将Jackson KotlinModule添加到Micronaut JMS
我创建了一个侦听AWS SQS队列的将Jackson KotlinModule添加到Micronaut JMS,kotlin,jackson,micronaut,Kotlin,Jackson,Micronaut,我创建了一个侦听AWS SQS队列的JMSListener。我成功接收到消息,但无法将接收到的消息反序列化为没有默认值的类 这是我的队列侦听器函数: @Queue(value=“queuename”,concurrency=“1-10”,acknowledgeMode=JMSContext.CLIENT\u ACKNOWLEDGE) 趣味接收(@MessageBody sqsMessage:SQSMessageDto){ .... } …和类别: 类SQSMessageDto( val not
JMSListener
。我成功接收到消息,但无法将接收到的消息反序列化为没有默认值的类
这是我的队列侦听器函数:
@Queue(value=“queuename”,concurrency=“1-10”,acknowledgeMode=JMSContext.CLIENT\u ACKNOWLEDGE)
趣味接收(@MessageBody sqsMessage:SQSMessageDto){
....
}
…和类别:
类SQSMessageDto(
val notificationType:字符串,
val mail:mail,
val收据:收据
)
函数无法将文本反序列化为SQSMessageDto,除非我为字段提供默认值
我尝试了什么?
当我在调试器模式下在io.micronaut.jms.serdes.DefaultSerializerDeserializer
上添加断点并手动注册Jackson的KotlinModule时,它就会工作。(OBJECT\u MAPPER.registerModule(新的KotlinModule())
)但我不知道如何正确创建它
错误消息:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法
构造com.example.sqs.SQSMessageDto
的实例(无创建者,
与默认构造函数类似,exist):无法从对象值反序列化
(无委托或基于属性的创建者)位于[来源:
(字符串)“{……}”]
只需使用
BeanCreatedEventListener
如图所示:
@独生子女
静态类ObjectMapperBeanEventListener实现BeanCreatedEventListener{
@Override
public ObjectMapper onCreated(BeanCreatedEvent<ObjectMapper> event) {
final ObjectMapper mapper = event.getBean();
mapper.registerModule(new KotlinModule())
return mapper;
}
}
@覆盖
已创建公共对象映射程序(BeanCreatedEvent事件){
final ObjectMapper mapper=event.getBean();
registerModule(新的KotlinModule())
返回映射器;
}
}