JMSExpiration specifies the expiration time of the message.
It is represented in milliseconds.
When
a message is sent, the JMS provider calculates its expiration time by adding
the time-to-live value specified on the send method to the time the message was
sent.
Example
/*
Set the message expiration to 1 minute from current time */
java.util.Date
date = new java.util.Date();
long
currentTimeInMillis = date.getTime();
long
expiration = currentTimeInMillis + 60000;
message.setJMSExpiration(expiration);
Above
statements set the expiration tim of message to 1 minute.
JMSProducer.java
package com.sample.producer; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class JMSProducer { private static final String JMS_PROVIDER_URL = "tcp://127.0.0.1:5050"; private static final String QUEUE = "DEMO_QUEUE"; public static void main(String[] args) throws JMSException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(JMS_PROVIDER_URL); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(QUEUE); MessageProducer producer = session.createProducer(destination); TextMessage message = session.createTextMessage("Hello, this is my first message."); /* Set the message expiration to 1 minute from current time */ java.util.Date date = new java.util.Date(); System.out.println(date); long currentTimeInMillis = date.getTime(); long expiration = currentTimeInMillis + 60000; message.setJMSExpiration(expiration); producer.send(message); connection.close(); } }
Note
a. When an undelivered
message’s expiration time is reached, the message should be destroyed. JMS does
not define a notification of message expiration.
b. Clients should not
receive messages that have expired; however, JMS does not guarantee that this
will not happen.
c. If the time-to-live
is specified as zero, the message’s JMSExpiration header field is set to zero
to indicate that the message does not expire.
No comments:
Post a Comment