> Message Delivery Modes
> The JMSDeliveryMode message header field defines the delivery mode for the message. JMS supports PERSISTENT and NON_PERSISTENT delivery modes for both topic and queue. EMS extends these delivery modes to include a RELIABLE_DELIVERY mode.
> You can set the default delivery mode for the Message Producer, as described in Configuring a Message Producer. This default delivery mode can be overridden by the client when sending a message, as described in Sending Messages.
> PERSISTENT
> As shown in Figure 5, when a producer sends a PERSISTENT message, the producer must wait for the server to reply with a confirmation. The message is persisted on disk by the server. This delivery mode ensures delivery of messages to the destination on the server in almost all circumstances. However, the cost is that this delivery mode incurs two-way network traffic for each message or committed transaction of a group of messages.
> Figure 5 Persistent Message Delivery
> NON_PERSISTENT
> Sending a NON_PERSISTENT message omits the overhead of persisting the message on disk to improve performance.
> If authorization is disabled on the server, the server does not send a confirmation to the message producer.
> If authorization is enabled on the server, the default condition is for the producer to wait for the server to reply with a confirmation in the same manner as when using PERSISTENT mode.
> Regardless of whether authorization is enabled or disabled, you can use the npsend_check_mode parameter in the tibemsd.conf file to specify the conditions under which the server is to send confirmation of NON_PERSISTENT messages to the producer. See the description for npsend_check_mode on page 176 for details.
> Figure 6 Non-Persistent Message Delivery
> RELIABLE_DELIVERY
> EMS extends the JMS delivery modes to include reliable delivery. Sending a RELIABLE_DELIVERY message omits the server confirmation to improve performance regardless of the authorization setting.
> Figure 7 Reliable Message Delivery
> When using RELIABLE_DELIVERY mode, the server never sends the producer a receipt confirmation or access denial and the producer does not wait for it. Reliable mode decreases the volume of message traffic, allowing higher message rates, which is useful for messages containing time-dependent data, such as stock price quotations.
> When you use the reliable delivery mode, the client application does not receive any response from the server. Therefore, all publish calls will always succeed (not throw an exception) unless the connection to the server has been terminated.
> In some cases a message published in reliable mode may be disqualified and not handled by the server because the destination is not valid or access has been denied. In this case, the message is not sent to any message consumer. However, unless the connection to the server has been terminated, the publishing application will not receive any exceptions, despite the fact that no consumer received the message.

Copyright © TIBCO Software Inc. All Rights Reserved.