background image

Specifying Message Persistence

<< The ackequivexample Project | Setting Message Priority Levels >>
<< The ackequivexample Project | Setting Message Priority Levels >>

Specifying Message Persistence

ant delete-control-queue
You will need the other resources for other examples.
To delete the class and JAR files for the program using NetBeans IDE, right-click the project and
choose Clean Project.
To delete the class and JAR files for the program using Ant, type the following:
ant clean
Specifying Message Persistence
The JMS API supports two delivery modes for messages to specify whether messages are lost if
the JMS provider fails. These delivery modes are fields of the DeliveryMode interface.
The PERSISTENT delivery mode, which is the default, instructs the JMS provider to take extra
care to ensure that a message is not lost in transit in case of a JMS provider failure. A
message sent with this delivery mode is logged to stable storage when it is sent.
The NON_PERSISTENT delivery mode does not require the JMS provider to store the message
or otherwise guarantee that it is not lost if the provider fails.
You can specify the delivery mode in either of two ways.
You can use the setDeliveryMode method of the MessageProducer interface to set the
delivery mode for all messages sent by that producer. For example, the following call sets the
delivery mode to NON_PERSISTENT for a producer:
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
You can use the long form of the send or the publish method to set the delivery mode for a
specific message. The second argument sets the delivery mode. For example, the following
send
call sets the delivery mode for message to NON_PERSISTENT:
producer.send(message, DeliveryMode.NON_PERSISTENT, 3, 10000);
The third and fourth arguments set the priority level and expiration time, which are
described in the next two subsections.
If you do not specify a delivery mode, the default is PERSISTENT. Using the NON_PERSISTENT
delivery mode may improve performance and reduce storage overhead, but you should use it
only if your application can afford to miss messages.
Creating Robust JMS Applications
The Java EE 5 Tutorial · September 2007
940