From aeb1f073a3de2faaa85284c6027d566f72574f73 Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Fri, 23 Mar 2018 11:53:04 +0800 Subject: [PATCH] Better support for TIbco Temporary Queues/Topics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When consuming, tibco JMS client doesn’t properly identify temporary destinations with the proper type, so we must rely on the name to determine if it is temporary. --- .../instrumentation/jms/util/JmsUtil.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/dd-java-agent/instrumentation/jms-1/src/main/java/datadog/trace/instrumentation/jms/util/JmsUtil.java b/dd-java-agent/instrumentation/jms-1/src/main/java/datadog/trace/instrumentation/jms/util/JmsUtil.java index 1d741d7f71..f76d6895c7 100644 --- a/dd-java-agent/instrumentation/jms-1/src/main/java/datadog/trace/instrumentation/jms/util/JmsUtil.java +++ b/dd-java-agent/instrumentation/jms-1/src/main/java/datadog/trace/instrumentation/jms/util/JmsUtil.java @@ -8,6 +8,7 @@ import javax.jms.TemporaryTopic; import javax.jms.Topic; public class JmsUtil { + private static final String TIBCO_TMP_PREFIX = "$TMP$"; public static String toResourceName(final Message message, final Destination destination) { Destination jmsDestination = null; @@ -18,21 +19,25 @@ public class JmsUtil { if (jmsDestination == null) { jmsDestination = destination; } - if (jmsDestination instanceof TemporaryQueue) { - return "Temporary Queue"; - } - if (jmsDestination instanceof TemporaryTopic) { - return "Temporary Topic"; - } try { if (jmsDestination instanceof Queue) { - return "Queue " + ((Queue) jmsDestination).getQueueName(); + final String queueName = ((Queue) jmsDestination).getQueueName(); + if (jmsDestination instanceof TemporaryQueue || queueName.startsWith(TIBCO_TMP_PREFIX)) { + return "Temporary Queue"; + } else { + return "Queue " + queueName; + } } if (jmsDestination instanceof Topic) { - return "Topic " + ((Topic) jmsDestination).getTopicName(); + final String topicName = ((Topic) jmsDestination).getTopicName(); + if (jmsDestination instanceof TemporaryTopic || topicName.startsWith(TIBCO_TMP_PREFIX)) { + return "Temporary Topic"; + } else { + return "Topic " + topicName; + } } } catch (final Exception e) { } - return "Unknown Destination"; + return "Destination"; } }