Search code examples
springspring-integrationspring-integration-dsl

How to use ActiveMQ queue with Spring Integration


I have a local ActiveMQ server and i want to poll messages from a queue named "test" using Spring Integration.

After i have polled the message i want to send it to another channel which would write it on a text file in the file system.

I have seen some examples using

<int-jms:message-driven-channel-adapter id="jmsIn" destination="inQueue" channel="exampleChannel"/>

I want to create this JMS "poller" using Java Annotations. I could not find any reference on how to replace the above XML stuff to annotations. Could anyone provide a working snippet that would have connection factory configuration and jms:message-driven-channel-adapter done with annotations?

P.S. Here is a reference that has XML configuration

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

Thanks a lot in advance !


Solution

  • Well, for proper Java & Annotations configuration you need to consider to use Spring Integration Java DSL.

    Here is some example for the <int-jms:message-driven-channel-adapter> equivalent:

        @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();
        }
    

    To write to file you need to use a Files.outboundAdapter(): https://docs.spring.io/spring-integration/docs/5.0.6.RELEASE/reference/html/files.html#_configuring_with_the_java_dsl_9

    I agree that we are missing similar Docs for JMS part, so feel free to raise a JIRA on the matter.