如何使用 ActiveMQ 队列与 Spring 集成
How to use ActiveMQ queue with Spring Integration
我有一个本地 ActiveMQ 服务器,我想使用 Spring 集成从名为 "test" 的队列中轮询消息。
轮询消息后,我想将其发送到另一个通道,该通道会将其写入文件系统中的文本文件。
我看过一些使用
的例子
<int-jms:message-driven-channel-adapter id="jmsIn" destination="inQueue" channel="exampleChannel"/>
我想使用 Java 注释创建此 JMS "poller"。我找不到任何关于如何将上述 XML 内容替换为注释的参考资料。
谁能提供一个工作片段,其中包含连接工厂配置和 jms:message-driven-channel-adapter 完成注释?
P.S。这是具有 XML 配置
的参考
提前致谢!
嗯,为了正确的 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。
我有一个本地 ActiveMQ 服务器,我想使用 Spring 集成从名为 "test" 的队列中轮询消息。
轮询消息后,我想将其发送到另一个通道,该通道会将其写入文件系统中的文本文件。
我看过一些使用
的例子<int-jms:message-driven-channel-adapter id="jmsIn" destination="inQueue" channel="exampleChannel"/>
我想使用 Java 注释创建此 JMS "poller"。我找不到任何关于如何将上述 XML 内容替换为注释的参考资料。 谁能提供一个工作片段,其中包含连接工厂配置和 jms:message-driven-channel-adapter 完成注释?
P.S。这是具有 XML 配置
的参考提前致谢!
嗯,为了正确的 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。