|
23 | 23 |
|
24 | 24 | import io.micrometer.observation.Observation;
|
25 | 25 | import io.micrometer.observation.tck.TestObservationRegistry;
|
| 26 | +import jakarta.jms.Message; |
26 | 27 | import jakarta.jms.MessageListener;
|
| 28 | +import jakarta.jms.TextMessage; |
27 | 29 | import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
|
28 | 30 | import org.apache.activemq.artemis.junit.EmbeddedActiveMQExtension;
|
29 | 31 | import org.assertj.core.api.Assertions;
|
@@ -81,6 +83,33 @@ void shouldRecordJmsProcessObservations(AbstractMessageListenerContainer listene
|
81 | 83 | listenerContainer.shutdown();
|
82 | 84 | }
|
83 | 85 |
|
| 86 | + @ParameterizedTest(name = "[{index}] {0}") |
| 87 | + @MethodSource("listenerContainers") |
| 88 | + void shouldRecordJmsPublishObservations(AbstractMessageListenerContainer listenerContainer) throws Exception { |
| 89 | + CountDownLatch latch = new CountDownLatch(1); |
| 90 | + listenerContainer.setConnectionFactory(connectionFactory); |
| 91 | + listenerContainer.setObservationRegistry(registry); |
| 92 | + listenerContainer.setDestinationName("spring.test.observation"); |
| 93 | + listenerContainer.setMessageListener((SessionAwareMessageListener) (message, session) -> { |
| 94 | + Message response = session.createTextMessage("test response"); |
| 95 | + session.createProducer(message.getJMSReplyTo()).send(response); |
| 96 | + }); |
| 97 | + listenerContainer.afterPropertiesSet(); |
| 98 | + listenerContainer.start(); |
| 99 | + JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory); |
| 100 | + TextMessage response = (TextMessage) jmsTemplate.sendAndReceive("spring.test.observation", |
| 101 | + session -> session.createTextMessage("test request")); |
| 102 | + |
| 103 | + // request received by listener and response received by template |
| 104 | + assertThat(registry).hasNumberOfObservationsWithNameEqualTo("jms.message.process", 2); |
| 105 | + // response sent to the template |
| 106 | + assertThat(registry).hasNumberOfObservationsWithNameEqualTo("jms.message.publish", 1); |
| 107 | + |
| 108 | + Assertions.assertThat(response.getText()).isEqualTo("test response"); |
| 109 | + listenerContainer.stop(); |
| 110 | + listenerContainer.shutdown(); |
| 111 | + } |
| 112 | + |
84 | 113 | @ParameterizedTest(name = "[{index}] {0}")
|
85 | 114 | @MethodSource("listenerContainers")
|
86 | 115 | void shouldHaveObservationScopeInErrorHandler(AbstractMessageListenerContainer listenerContainer) throws Exception {
|
|
0 commit comments