我有一个本地ActiveMQ服务器,我想使用Spring Integration从名为“ test”的队列中轮询消息。
查询完消息后,我想将其发送到另一个通道,该通道会将其写入文件系统中的文本文件中。
我已经看到一些使用
的例子
<int-jms:message-driven-channel-adapter id="jmsIn" destination="inQueue" channel="exampleChannel"/>
我想使用Java注释创建此JMS“轮询器”。我找不到任何有关如何将上述XML内容替换为注释的参考。 任何人都可以提供一个可以正常工作的代码段,该代码段将具有连接工厂配置和带有注释的jms:message-driven-channel-adapter吗?
P.S。这是具有XML配置的参考
非常感谢!
答案 0 :(得分:2)
好吧,对于正确的Java和注释配置,您需要考虑使用Spring Integration Java DSL。
以下是与<int-jms:message-driven-channel-adapter>
等价的示例:
@Bean
public IntegrationFlow jmsMessageDrivenRedeliveryFlow() {
return IntegrationFlows
.from(Jms.messageDrivenChannelAdapter(jmsConnectionFactory())
.errorChannel(IntegrationContextUtils.ERROR_CHANNEL_BEAN_NAME)
.destination("jmsMessageDrivenRedelivery")
.configureListenerContainer(c -> c
.transactionManager(mock(PlatformTransactionManager.class))
.id("jmsMessageDrivenRedeliveryFlowContainer")))
.<String, String>transform(p -> {
throw new RuntimeException("intentional");
})
.get();
}
要写入文件,您需要使用Files.outboundAdapter()
:https://docs.spring.io/spring-integration/docs/5.0.6.RELEASE/reference/html/files.html#_configuring_with_the_java_dsl_9
我同意我们缺少用于JMS的类似文档,因此随时可以提出JIRA。