You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/01/24 12:21:55 UTC
(camel) branch camel-3.22.x updated: CAMEL-20363: camel-jms - Make getting JMSCorrelationID more roboust f… (#12892)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.22.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.22.x by this push:
new 7aff3bdb0c1 CAMEL-20363: camel-jms - Make getting JMSCorrelationID more roboust f… (#12892)
7aff3bdb0c1 is described below
commit 7aff3bdb0c18be55f4e86561ecb1ba9d7dfce0c0
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jan 24 13:18:30 2024 +0100
CAMEL-20363: camel-jms - Make getting JMSCorrelationID more roboust f… (#12892)
* CAMEL-20363: camel-jms - Make getting JMSCorrelationID more roboust for JMS brokers that has bugs in this regard.
* camel-jms - Flaky test on CI
---
.../camel/component/jms/EndpointMessageListener.java | 9 +++++----
.../java/org/apache/camel/component/jms/JmsBinding.java | 2 +-
.../org/apache/camel/component/jms/JmsMessageHelper.java | 15 +++++++++++++++
.../java/org/apache/camel/component/jms/JmsProducer.java | 2 +-
.../camel/component/jms/reply/ReplyManagerSupport.java | 4 ++--
5 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
index 3f2df72ced7..8f325337f89 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
@@ -107,7 +107,7 @@ public class EndpointMessageListener implements SessionAwareMessageListener {
exchange.getIn().getHeaders();
}
- String correlationId = message.getJMSCorrelationID();
+ String correlationId = JmsMessageHelper.getJMSCorrelationID(message);
if (correlationId != null) {
LOG.debug("Received Message has JMSCorrelationID [{}]", correlationId);
}
@@ -378,11 +378,12 @@ public class EndpointMessageListener implements SessionAwareMessageListener {
*/
protected String determineCorrelationId(final Message message) throws JMSException {
final String messageId = message.getJMSMessageID();
- final String correlationId = message.getJMSCorrelationID();
-
if (endpoint.getConfiguration().isUseMessageIDAsCorrelationID()) {
return messageId;
- } else if (ObjectHelper.isEmpty(correlationId)) {
+ }
+
+ final String correlationId = JmsMessageHelper.getJMSCorrelationID(message);
+ if (ObjectHelper.isEmpty(correlationId)) {
// correlation id is empty so fallback to message id
return messageId;
} else {
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
index 76f2fd8e65a..d103e20ebf1 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
@@ -178,7 +178,7 @@ public class JmsBinding {
if (jmsMessage != null) {
// lets populate the standard JMS message headers
try {
- map.put(JmsConstants.JMS_HEADER_CORRELATION_ID, jmsMessage.getJMSCorrelationID());
+ map.put(JmsConstants.JMS_HEADER_CORRELATION_ID, JmsMessageHelper.getJMSCorrelationID(jmsMessage));
map.put(JmsConstants.JMS_HEADER_CORRELATION_ID_AS_BYTES,
JmsMessageHelper.getJMSCorrelationIDAsBytes(jmsMessage));
map.put(JmsConstants.JMS_HEADER_DELIVERY_MODE, jmsMessage.getJMSDeliveryMode());
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
index 5083c904217..d5647c0125c 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
@@ -445,4 +445,19 @@ public final class JmsMessageHelper {
}
return null;
}
+
+ /**
+ * Gets the JMSCorrelationID from the message.
+ *
+ * @param message the message
+ * @return the JMSCorrelationID, or <tt>null</tt> if not able to get
+ */
+ public static String getJMSCorrelationID(Message message) {
+ try {
+ return message.getJMSCorrelationID();
+ } catch (Exception e) {
+ // ignore if JMS broker do not support this
+ }
+ return null;
+ }
}
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java
index 99bc20211e2..541b1622887 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java
@@ -275,7 +275,7 @@ public class JmsProducer extends DefaultAsyncProducer {
final String correlationProperty = configuration.getCorrelationProperty();
final String messageId = message.getJMSMessageID();
- final String correlationId = message.getJMSCorrelationID();
+ final String correlationId = JmsMessageHelper.getJMSCorrelationID(message);
final String correlationPropertyValue;
if (correlationProperty == null) {
correlationPropertyValue = null;
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
index 08a0eb8f223..5410928384b 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
@@ -145,11 +145,11 @@ public abstract class ReplyManagerSupport extends ServiceSupport implements Repl
try {
if (correlationProperty == null) {
- correlationID = message.getJMSCorrelationID();
+ correlationID = JmsMessageHelper.getJMSCorrelationID(message);
} else {
correlationID = message.getStringProperty(correlationProperty);
}
- } catch (JMSException e) {
+ } catch (Exception e) {
// ignore
}