diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java index a70c64e5ec..9d7a6196a1 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/DefaultJmsHeaderMapper.java @@ -196,6 +196,11 @@ public class DefaultJmsHeaderMapper implements JmsHeaderMapper { catch (Exception e) { logger.info("failed to read JMSType property, skipping", e); } + try { + headers.put(JmsHeaders.TIMESTAMP, jmsMessage.getJMSTimestamp()); + } catch (Exception e) { + logger.info("failed to read JMSTimestamp property, skipping", e); + } Enumeration jmsPropertyNames = jmsMessage.getPropertyNames(); if (jmsPropertyNames != null) { while (jmsPropertyNames.hasMoreElements()) { diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsHeaders.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsHeaders.java index 54d11a2b03..078938ddb0 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsHeaders.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsHeaders.java @@ -41,4 +41,6 @@ public abstract class JmsHeaders { public static final String TYPE = PREFIX + "type"; + public static final String TIMESTAMP = PREFIX + "timestamp"; + } diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/DefaultJmsHeaderMapperTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/DefaultJmsHeaderMapperTests.java index b86c114fb1..7f23ef5a1f 100644 --- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/DefaultJmsHeaderMapperTests.java +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/DefaultJmsHeaderMapperTests.java @@ -205,6 +205,18 @@ public class DefaultJmsHeaderMapperTests { assertSame(type, attrib); } + @Test + public void testJmsTimestampMappedToHeader() throws JMSException { + long timestamp = 123L; + javax.jms.Message jmsMessage = new StubTextMessage(); + jmsMessage.setJMSTimestamp(timestamp); + DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); + Map headers = mapper.toHeaders(jmsMessage); + Object attrib = headers.get(JmsHeaders.TIMESTAMP); + assertNotNull(attrib); + assertEquals(timestamp, attrib); + } + @Test public void testUserDefinedPropertyMappedToHeader() throws JMSException { javax.jms.Message jmsMessage = new StubTextMessage();