2016-11-23 16 views
2

このようにJms統合フローを定義すると、ハンドラでメッセージタイプのキャストを避ける方法がありますか?あるいは、私はJMS統合を別の方法で実装する必要がありますか?Spring統合におけるメッセージタイプの安全性DSL

@EnableJms 
@EnableIntegration 
@Configuration 
public class JmsInboundFlow { 
private Logger logger = LoggerFactory.getLogger(JmsInboundFlow.class); 

@Autowired 
public ConnectionFactory jmsConnectionFactory; 

@Autowired 
private JmsMessageMyPojoHandlerService handlerService; 

@Bean 
public IntegrationFlow jmsMessageDrivenFlow() { 
    return IntegrationFlows.from(messageDrivenChannelAdapter(jmsConnectionFactory).destination("queuName") 
      .errorChannel(jmsMyPojoErrorChannel())) 
      .transform(Transformers.fromJson(MyPojo.class)) 
      .handle(message -> handlerService.addEvent((Message<MyPojo>) message)) 
      .get(); 
} 

@Bean 
public MessageChannel jmsMyPojoErrorChannel() { 
    return MessageChannels.direct("customErrorChannel") 
      .get(); 
} 

@Bean 
public IntegrationFlow customErrorFlow() { 
    return IntegrationFlows.from(jmsMyPojoErrorChannel()) 
      .handle(msg -> logger.error("Error processing JMS message " + msg.getPayload())) 
      .get(); 
} 
} 
+0

流暢なビルダーはタイプセーフではないようですが、私はその理由を知らない –

答えて

1

あなたは.handle(service, method)バリアントを使用することができます - とフレームワークは、あなたのための適切なキャストについて世話をします。