java.lang.AutoCloseable
, java.lang.Runnable
, javax.jms.Session
WLQueueSession
, WLTopicSession
public interface WLSession
javax.jms.Session.
.WLSession provides methods for the following:
WLSession also supports NO_ACKNOWLEDGE and MULTICAST_NO_ACKNOWLEDGE acknowledge modes.
Session
,
QueueSession
,
TopicSession
Modifier and Type | Field | Description |
---|---|---|
static int |
KEEP_NEW |
Multicast overrun policy specifying that the most recent messages should
be saved and the oldest ones discarded, as needed, so as not to exceed the
message maximum.
|
static int |
KEEP_OLD |
Multicast overrun policy specifying that the oldest messages should
be saved and the most recent ones discarded, as needed, so as not to
exceed the message maximum.
|
static int |
MULTICAST_NO_ACKNOWLEDGE |
Multicast mode with no acknowledge required.
|
static int |
NO_ACKNOWLEDGE |
No acknowledge is required.
|
Modifier and Type | Method | Description |
---|---|---|
void |
acknowledge() |
Acknowledge all the messages received by this session.
|
void |
acknowledge(javax.jms.Message message) |
Acknowledge all the messages received by this session.
|
XMLMessage |
createXMLMessage() |
Create an XMLMessage.
|
XMLMessage |
createXMLMessage(java.lang.String xml) |
Create an initialized XMLMessage from a String containing XML.
|
XMLMessage |
createXMLMessage(org.w3c.dom.Document doc) |
Create an initialized XMLMessage from a DOM Document containing XML.
|
int |
getMessagesMaximum() |
The maximum number of messages that may exist for an asynchronous
session, which have not yet been passed to the message listener.
|
int |
getOverrunPolicy() |
Get overrun policy for multicast sessions.
|
long |
getRedeliveryDelay() |
The redelivery delay for this session; this defines the delay in
milliseconds before rolled back or recovered messages are redelivered.
|
void |
setExceptionListener(javax.jms.ExceptionListener exceptionListener) |
Set an exception listener for this session.
|
void |
setMessagesMaximum(int messagesMaximum) |
Set the maximum number of messages that may exist for an asynchronous
session, which have not yet been passed to the message listener.
|
void |
setOverrunPolicy(int policy) |
Set overrun policy for multicast sessions.
|
void |
setRedeliveryDelay(long redeliveryDelay) |
Set the redelivery delay for this consumer; this defines the delay in
milliseconds before rolled back or recovered messages are redelivered.
|
void |
unsubscribe(javax.jms.Topic topic,
java.lang.String name) |
Unsubscribe a durable subscription on a particular topic or distributed topic member.
|
static final int NO_ACKNOWLEDGE
Messages sent to a NO_ACKNOWLEDGE session are immediately deleted from the server. Messages received in this mode are not recovered, and as a result messages may be lost and/or a duplicate message may be delivered if an initial attempt to deliver a message fails.
This mode is supported for applications that do not require the quality of service provided by session acknowledge, and that do not want to incur the associated overhead.
You should avoid using this mode if your application cannot handle duplicate messages.
static final int MULTICAST_NO_ACKNOWLEDGE
Messages sent to a MULTICAST_NO_ACKNOWLEDGE session share the same characteristics as NO_ACKNOWLEDGE mode.
This mode is supported for applications that want to support multicasting, and that do not require the quality of service provided by session acknowledge.
You should avoid using this mode if your application is unable to handle duplicate messages, which can occur if a message fails to be delivered during the first attempt.
static final int KEEP_OLD
static final int KEEP_NEW
XMLMessage createXMLMessage() throws javax.jms.JMSException
javax.jms.JMSException
- if a JMS error occurs.createXMLMessage(String)
XMLMessage createXMLMessage(java.lang.String xml) throws javax.jms.JMSException
xml
- The XML content represented as a stringjavax.jms.JMSException
- if a JMS error occurs.createXMLMessage()
XMLMessage createXMLMessage(org.w3c.dom.Document doc) throws javax.jms.JMSException
doc
- The XML content represented as a DOM Documentjavax.jms.JMSException
- if a JMS error occurs.createXMLMessage()
void setExceptionListener(javax.jms.ExceptionListener exceptionListener) throws javax.jms.JMSException
If a JMS provider detects a serious problem with a session, it will inform the session's exception listener, if one has been registered. It informs the exception listener by calling the listener's onException() method and passing a JMSException describing the problem.
The exception listener allows a client to be asynchronously notified of a problem. Some sessions only consume messages, so they would have no other way to learn that the session has failed.
A session serializes execution of its exception listener.
A JMS provider should attempt to resolve session problems prior to notifying the client.
exceptionListener
- The exception listener.javax.jms.JMSException
- general exception if JMS implementation
fails to set the exception listener for this session.int getMessagesMaximum() throws javax.jms.JMSException
A value of -1 indicates that there is no limit on the number of messages. In this case, however, the limit is set to the amount of remaining virtual memory.
javax.jms.JMSException
- if a JMS error occurs.setMessagesMaximum(int)
void setMessagesMaximum(int messagesMaximum) throws javax.jms.JMSException
A value of -1 indicates that there is no limit on the number of messages. In this case, however, the limit is set to the amount of remaining virtual memory.
When the number of messages reaches the specified value, the following occurs:
For multicast sessions, when a connection is stopped, messages will continue to be accumulated, but only until the specified maximum value is reached. Once this value is reached, messages will be discarded based on the overrun policy.
messagesMaximum
- The maximum number of messages allowed, valid
values are -1, and 1 through 2^63-1 (default is 10).javax.jms.JMSException
- if a JMS error occurs.getMessagesMaximum()
int getOverrunPolicy() throws javax.jms.JMSException
javax.jms.JMSException
- general exception if the JMS implementation
fails to set the exception listener for this session.setOverrunPolicy(int)
void setOverrunPolicy(int policy) throws javax.jms.JMSException
When the number of messages reaches the message maximum, messages are discarded based on the specified policy, as follows:
Message age is defined by the order of receipt, not by the JMSTimestamp value.
policy
- The overrun policy.javax.jms.JMSException
- general exception if JMS implementation
fails to set the exception listener for this session.getOverrunPolicy()
long getRedeliveryDelay() throws javax.jms.JMSException
javax.jms.JMSException
- if a JMS error occurs.setRedeliveryDelay(long)
void setRedeliveryDelay(long redeliveryDelay) throws javax.jms.JMSException
Performance Note: If any consumers for remote destinations already exist on this session, calling this method results in a network call(s) in order to disseminate the changed delay value to them.
redeliveryDelay
- Redelivery delay for this session.javax.jms.JMSException
- if a JMS error occurs.getRedeliveryDelay()
void acknowledge() throws javax.jms.JMSException
javax.jms.JMSException
- if a JMS error occursvoid acknowledge(javax.jms.Message message) throws javax.jms.JMSException
javax.jms.JMSException
- if a JMS error occursvoid unsubscribe(javax.jms.Topic topic, java.lang.String name) throws javax.jms.JMSException
Although this API can be used for both Unrestricted and Restricted Client ID cases, if a subscription is created using an Unrestricted Client ID, it can only be unsubscribed using this method from a session that has the same Unrestricted Client ID.
topic
- the topic or distributed topic member that the subscription is onname
- the name used to identify this subscriptionjavax.jms.JMSException
- if the session fails to unsubscribe to the durable
subscription due to some internal error.javax.jms.InvalidDestinationException
- if an invalid subscription name, a null topic, or a distributed topic is specified.