3

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"
israel berko
  • 556
  • 1
  • 5
  • 18

0 Answers0