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

Spring boot 动态/注解自定义 JSON 反序列化器

Spring Boot 不为 ZonedDateTime 使用自定义反序列化器