首页 > 解决方案 > 如果我不想使用 dsl 编写在 jms 和 spring 集成通道之间建立连接的代码,它是怎么做的

问题描述

在这个链接中,作者使用 java 领域特定语言来建立从 spring 集成通道到 activeMQ 的连接。如果我不想使用 java dsl 而我只想使用一般的 java 方法。我应该怎么做?

@Bean
public IntegrationFlow outboundFlow(ActiveMQConnectionFactory connectionFactory) {
    return IntegrationFlows
            .from(requests())
            .handle(Jms.outboundAdapter(connectionFactory).destination("requests"))
            .get();
}

https://github.com/spring-projects/spring-batch/blob/master/spring-batch-samples/src/main/java/org/springframework/batch/sample/remotepartitioning/aggregating/WorkerConfiguration.java

标签: spring-integrationspring-batch

解决方案


Jms.outboundAdapter(connectionFactory)是一个语法糖包装器JmsSendingMessageHandler

是的.handle()等价物@ServiceActivator

因此,使用纯 Java 所需的内容是这样的:

@Bean
@ServiceActivator(inputChannel="requests")
public MessageHandler jmsMessageHandler((ActiveMQConnectionFactory connectionFactory) {
   JmsSendingMessageHandler handler = new JmsSendingMessageHandler(new JmsTemplate(connectionFactory));
   handler.setDestinationName("requests");
   return handler;
}

请参阅文档中的一些解释:https ://docs.spring.io/spring-integration/docs/current/reference/html/overview.html#programming-tips

更多关于JmsSendingMessageHandlerhttps ://docs.spring.io/spring-integration/docs/current/reference/html/jms.html#jms-outbound-channel-adapter


推荐阅读