2016-06-16 13 views
1

私は、チャネルアダプタを介してキューをリスンするコンポーネントにJMSを介して転送されるオブジェクトがあります。Spring統合のJava DSL:カスタムデシリアライザを指定

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 
       ) 

ありがとうございます。

答えて

2

デシリアライゼーションのロジックはあなたのように指定することができ、org.springframework.jms.support.converter.MessageConverterの一部です:

.from(Jms.messageDriverChannelAdapter(connectionFactory) 
     .destination(inputQueue) 
     .jmsMessageConverter(...) 
) 

私はラムダとのことをするためにあなたの願いを理解し、私は場合は、余分なロジックを導入する理由が表示されませんこれは既存の抽象化で達成することができます。

+0

お返事ありがとうございました。小さな質問:それを指定しないと、org.springframework.jms.support.converter.SimpleMessageConverterが使用されていますか? – tkachuko

+1

+1: 'ChannelPublishingJmsMessageListener':https://github.com/spring-projects/spring-integration/blob/master/spring-integration-jms/src/main/java/org/springframework/integration/jms/ChannelPublishingJmsMessageListener。 Java#L72 –

関連する問題