Spring Jms ActiveMQ – How to create a SpringBoot ActiveMQ Response Management application by @SendTo annotation
In the past posts, we had learned how to consume/produce ActiveMq JMS messages. Today, JavaSampleApproach will show you way to create a SpringBoot ActiveMQ Response Management application by @SendTo
annotation.
Related posts:
- Spring ActiveMQ JMS Consumer and JMS Producer
- Send Java object messages to ActiveMQ server (specially with Bi-Directional relationship Java objects)
- Spring JMS ActiveMq Topic (Publisher-Subcribers pattern)
I. Technologies
– Java 8
– Maven 3.6.1
– Spring Tool Suite: Version 3.8.4.RELEASE
– Spring Boot: 1.5.4.RELEASE
– Apache ActiveMQ 5.14.0
II. ActiveMQ Response Management
With the Spring JMS improvements (from 4.1), we can used @SendTo
annotation to define the default next destination with @JmsListener
:
@JmsListener(destination = "${jsa.activemq.queue.listen}", containerFactory="jsaFactory")
@SendTo("${jsa.activemq.queue.sendto}")
public Product processOrder(Product product) {
// process a newProduct
return newProduct;
}
For additional headers, you could return a Message object instead:
@JmsListener(destination = "${jsa.activemq.queue.listen}", containerFactory="jsaFactory")
@SendTo("${jsa.activemq.queue.sendto}")
public Message receive(Product product, @Header("company") String companyName){
...
Message mesage = MessageBuilder
.withPayload(product)
.setHeader("type", product.getType())
.build();
return mesage;
}
When having several @JmsListener
methods, we can also place the @SendTo
annotation at the class level to share a default reply destination.
III. Practice
In the tutorial, we create 2 SpringBoot projects {SpringActiveMqProducerConsumer, SpringActiveMqSendTo}:
MORE AT:
Spring Jms ActiveMQ – How to create a SpringBoot ActiveMQ Response Management application by @SendTo annotation
Top comments (0)