2016-11-23 37 views
2

如果我以這種方式定義Jms集成流程,是否有避免在處理程序中投射消息類型的方法?或者也許我應該以不同的方式實現JMS集成?彈簧集成中的消息類型安全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)變體 - Framework將關心爲您正確投射。