mirror of https://github.com/apache/activemq.git
AMQ-2029 set JMS* headers on non-amq messages, with a test
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@725019 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
05602bb0b1
commit
9e6f62b7c2
|
@ -1603,6 +1603,21 @@ public class ActiveMQSession implements Session, QueueSession, TopicSession, Sta
|
||||||
TransactionId txid = transactionContext.getTransactionId();
|
TransactionId txid = transactionContext.getTransactionId();
|
||||||
long sequenceNumber = producer.getMessageSequence();
|
long sequenceNumber = producer.getMessageSequence();
|
||||||
|
|
||||||
|
//Set the "JMS" header fields on the orriginal message, see 1.1 spec section 3.4.11
|
||||||
|
message.setJMSDestination(destination);
|
||||||
|
message.setJMSDeliveryMode(deliveryMode);
|
||||||
|
long expiration = 0L;
|
||||||
|
if (!producer.getDisableMessageTimestamp()) {
|
||||||
|
long timeStamp = System.currentTimeMillis();
|
||||||
|
message.setJMSTimestamp(timeStamp);
|
||||||
|
if (timeToLive > 0) {
|
||||||
|
expiration = timeToLive + timeStamp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
message.setJMSExpiration(expiration);
|
||||||
|
message.setJMSPriority(priority);
|
||||||
|
message.setJMSRedelivered(false);
|
||||||
|
|
||||||
// transform to our own message format here
|
// transform to our own message format here
|
||||||
ActiveMQMessage msg = ActiveMQMessageTransformation.transformMessage(message, connection);
|
ActiveMQMessage msg = ActiveMQMessageTransformation.transformMessage(message, connection);
|
||||||
|
|
||||||
|
@ -1616,19 +1631,6 @@ public class ActiveMQSession implements Session, QueueSession, TopicSession, Sta
|
||||||
//clear the brokerPath in case we are re-sending this message
|
//clear the brokerPath in case we are re-sending this message
|
||||||
msg.setBrokerPath(null);
|
msg.setBrokerPath(null);
|
||||||
|
|
||||||
msg.setJMSDestination(destination);
|
|
||||||
msg.setJMSDeliveryMode(deliveryMode);
|
|
||||||
long expiration = 0L;
|
|
||||||
if (!producer.getDisableMessageTimestamp()) {
|
|
||||||
long timeStamp = System.currentTimeMillis();
|
|
||||||
msg.setJMSTimestamp(timeStamp);
|
|
||||||
if (timeToLive > 0) {
|
|
||||||
expiration = timeToLive + timeStamp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
msg.setJMSExpiration(expiration);
|
|
||||||
msg.setJMSPriority(priority);
|
|
||||||
msg.setJMSRedelivered(false);
|
|
||||||
|
|
||||||
msg.setTransactionId(txid);
|
msg.setTransactionId(txid);
|
||||||
if (connection.isCopyMessageOnSend()) {
|
if (connection.isCopyMessageOnSend()) {
|
||||||
|
|
|
@ -465,7 +465,23 @@ public class JMSMessageTest extends JmsTestSupport {
|
||||||
ForeignMessage message = new ForeignMessage();
|
ForeignMessage message = new ForeignMessage();
|
||||||
message.text = "Hello";
|
message.text = "Hello";
|
||||||
message.setStringProperty("test", "value");
|
message.setStringProperty("test", "value");
|
||||||
producer.send(message);
|
long timeToLive = 10000L;
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
producer.send(message, Session.AUTO_ACKNOWLEDGE, 7, timeToLive);
|
||||||
|
long end = System.currentTimeMillis();
|
||||||
|
|
||||||
|
|
||||||
|
//validate jms spec 1.1 section 3.4.11 table 3.1
|
||||||
|
// JMSDestination, JMSDeliveryMode, JMSExpiration, JMSPriority, JMSMessageID, and JMSTimestamp
|
||||||
|
//must be set by sending a message.
|
||||||
|
assertEquals(destination, message.getJMSDestination());
|
||||||
|
assertEquals(Session.AUTO_ACKNOWLEDGE, message.getJMSDeliveryMode());
|
||||||
|
assertTrue(start + timeToLive <= message.getJMSExpiration());
|
||||||
|
assertTrue(end + timeToLive >= message.getJMSExpiration());
|
||||||
|
assertEquals(7, message.getJMSPriority());
|
||||||
|
assertNotNull(message.getJMSMessageID());
|
||||||
|
assertTrue(start <= message.getJMSTimestamp());
|
||||||
|
assertTrue(end >= message.getJMSTimestamp());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate message is OK.
|
// Validate message is OK.
|
||||||
|
|
Loading…
Reference in New Issue