I have 2 services, I'm trying to add log correlation with sleuth.
first service: spring-boot version:1.5.9.RELEASE
second service: spring-boot version:1.5.3.RELEASE
the first service sends to the second service 2 messages, one via HTTP and one via JMS
public void sendHeartbeatCommand() {
Long sendTime = System.currentTimeMillis();
Heartbeat newHeartbeat = new Heartbeat();
newHeartbeat.setHostname(hostname);
newHeartbeat.setStartedAt(serverStartup);
newHeartbeat.setLastSeen(sendTime);
newHeartbeat.setServerLoading(serverLoading);
newHeartbeat.setBuildVersion(serverBuildVersion);
newHeartbeat.setTemplateVersion(templateVersion);
newHeartbeat.setSpVersion(serverServicePackVersion);
newHeartbeat.setHostType(HostType.NAAS);
serverLoading = false;
wlmJmsTemplate.convertAndSend("heartbeat.queue", newHeartbeat);
logger.info("Sending heartbeat command to WLM " + sendTime);
}
and I log this:
2020-09-15 14:12:03.625 [74171361b0a802ca/74171361b0a802ca/NAAS] INFO [task-scheduler-9] communication.HeartBeatSender - Sending heartbeat command to WLM 1600168323386
in the second service, I read the message:
@JmsListener(destination = "heartbeat.queue")
public void receiveHeartbeat(TextMessage message) throws JMSException {
receive(message);
}
@JmsListener(destination = "wlm.commands")
public void receive(TextMessage message) throws JMSException {
logger.info("Received message: {}", message.getText());
try {
CommandMessage cmdMsg = buildCommandFromTextMessage(message);
findAndInvokeCommandHandler(cmdMsg);
} catch (UnresolvableMessageType umt) {
logger.error("Unable to properly parse message {}. Can't resolve message class: {}", message.getText(),
umt.getMessageType(), umt);
} catch (IOException ioe) {
logger.error("Unable to properly parse message {}", message, ioe);
}
}
but I don't see the logs I expect to see:
2020-09-15 14:12:03.512 [//WLM] INFO [DefaultMessageListenerContainer-1] events.CommandListener - Received message: {"hostname":"israelb-lap","startedAt":1600151393441,"lastSeen":1600168323386,"serverLoading":false,"buildVersion":"$NAAS_BUILD$","templateVersion":null,"spVersion":null,"hostType":"NAAS"}
my log4j files are:
first service:
<Console name="Console-Appender" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{X-B3-TraceId}/%X{X-B3-SpanId}/${appName}] %-5p [%t] %C{2} - %m%n"/>
</Console>
second service:
<Console name="Console-Appender" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{X-B3-TraceId}/%X{X-B3-SpanId}/${appName}] %-5p [%t] %C{2} - %m%n"/>
</Console>
properties:
first service:
spring.sleuth.sampler.probability=1.0
spring.sleuth.messaging.enabled = true
spring.sleuth.messaging.jms.enabled=true
second service:
spring.sleuth.sampler.probability=1.0
spring.sleuth.messaging.enabled = true
spring.sleuth.messaging.jms.enabled=true
Poms: first service:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
second service:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.SR6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
How do I correlate the log messages through Spring JMS? What am I missing?
Update:
I tried it we a third service - version:2.0.1.RELEASE
the service writes and reads from the queue. can't upgrade the version.
writing:
public ResponseEntity<String> getWorkOrdersTest() {
logger.info("getWorkOrdersTest ");
wlmJmsTemplate.convertAndSend("israel.queue", "Sent from PGW");
return ResponseEntity.ok("PGW Test");
}
reading:
@JmsListener(destination = "israel.queue")
public void receiveT(TextMessage message) throws JMSException {
logger.info("Received message: {}", message.getText());
}
configuration:
@Bean(name ="wlmJmsTemplate")
public JmsTemplate wlmJmsTemplate() {
JmsTemplate template = new JmsTemplate();
template.setConnectionFactory(connectionFactory());
template.setMessageConverter(jacksonJmsMessageConverter());
template.setExplicitQosEnabled(true);
template.setDefaultDestinationName("israel.queue");
return template;
}
properties:
spring.sleuth.sampler.probability=1.0
spring.sleuth.messaging.enabled = true
spring.sleuth.messaging.jms.enabled=true
logs:
2020-09-16 15:04:31.312 [9ab59563855a15d9/9ab59563855a15d9/PGW] INFO [http-nio-9093-exec-7] api.WorkOrdersApiController - getWorkOrdersTest
2020-09-16 15:04:31.404 [//PGW] INFO [DefaultMessageListenerContainer-1] events.ProvisionEventsListener - Received message: "Sent from PGW"