1
votes

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 !

1

1 Answers

2
votes

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.