如何在Spring Integration中使用ActiveMQ队列

时间:2018-07-16 20:42:08

标签: spring spring-integration spring-integration-dsl

我有一个本地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配置的参考

https://examples.javacodegeeks.com/enterprise-java/spring/integration/spring-boot-integration-activemq-example/

非常感谢!

1 个答案:

答案 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。