Εμφάνιση αναρτήσεων με ετικέτα queues. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα queues. Εμφάνιση όλων των αναρτήσεων

Τρίτη 16 Μαρτίου 2021

Spring Boot Messaging with JmsTemplate and EmbeddedActiveMQBroker



Spring Boot Messaging with JmsTemplate and EmbeddedActiveMQBroker 







1. Pom.xml


<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-camel</artifactId> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-broker</artifactId> <scope>test</scope> </dependency>



2. Application yml / properties


amq: endpoint: in: some.queue.route.in broker: url: vm://localhost?broker.persistent=false



3. Test Class


@SpringBootTest(classes = {Application.class}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) @ActiveProfiles({"your-app-yml"}) public class TestClass { @Autowired private JmsTemplate jmsTemplate; @Rule public EmbeddedActiveMQBroker broker = new EmbeddedActiveMQBroker(); @Value("${amq.endpoint.in}") private String amqEndpointIn; /** * Make sure all queues are initialized before starting tests */ @Before public void init() { this.jmsTemplate.browse("some.queue.route2.in", (session, browser) -> 0); this.jmsTemplate.browse("some.queue.route3.in", (session, browser) -> 0); this.jmsTemplate.browse("some.queue.route.in", (session, browser) -> 0); } @Test public void testQueues() throws Exception { // assert again all queues are empty before starting original test assertTrue(broker.getMessageCount("some.queue.route2.in") < 0); assertTrue(broker.getMessageCount("some.queue.route3.in") < 0); assertTrue(broker.getMessageCount("some.queue.route.in") == 0); // trigger jmsTemplate.send(amqEndpointIn, mc -> mc.createTextMessage(message)); jmsTemplate.send("some.queue.route2.in", mc -> mc.createTextMessage(message)); // assert copy-queue not empty, dlq-queue empty assertTrue(broker.getMessageCount("some.queue.route2.in") > 0); assertTrue(broker.getMessageCount("some.queue.route3.in") < 0); } }