Spring集成Java DSL:指定自定义反序列化器
Posted
技术标签:
【中文标题】Spring集成Java DSL:指定自定义反序列化器【英文标题】:Spring integration Java DSL: specify custom deserializer 【发布时间】:2016-10-18 11:40:56 【问题描述】:我有通过 JMS 传输到通过通道适配器侦听队列的组件的对象:
IntegrationFlows
.from(Jms.messageDriverChannelAdapter(connectionFactory)
.destination(inputQueue)
)
但是这种设置只提供了接收ObjectMessage
的可能性,但是我想提供自定义解串器,它也能够接受BytesMessage
。所需的设置如下所示:
IntegrationFlows
.from(Jms.messageDriverChannelAdapter(connectionFactory)
.destination(inputQueue)
.deserializeWith((javax.jms.Message message) -> new org.springframework.messaging.Message()) // Does not exist, but desired
)
非常感谢。
【问题讨论】:
【参考方案1】:反序列化逻辑是org.springframework.jms.support.converter.MessageConverter
的一部分,您可以将其指定为:
.from(Jms.messageDriverChannelAdapter(connectionFactory)
.destination(inputQueue)
.jmsMessageConverter(...)
)
我理解您希望使用 Lambda 实现这一点,但如果可以通过现有抽象来实现,我认为没有理由引入额外的逻辑。
【讨论】:
非常感谢您的快速回复。小问题:我不指定的时候,是不是用了org.springframework.jms.support.converter.SimpleMessageConverter? +1:ChannelPublishingJmsMessageListener
:github.com/spring-projects/spring-integration/blob/master/…以上是关于Spring集成Java DSL:指定自定义反序列化器的主要内容,如果未能解决你的问题,请参考以下文章
杰克逊自定义反序列化器在 Spring Boot 中不起作用
Spring @RestController 自定义 JSON 反序列化器
Spring Boot 自定义Jackson ObjectMapper
在 Jackson / Spring Boot 中测试自定义 Json Deserializer