[TIBCO.EMS .NET client library 6.0 documentation]
Assembly: TIBCO.EMS (in TIBCO.EMS.dll)
A Session object is a single-threaded context for
producing and consuming messages.
Namespace:
TIBCO.EMSAssembly: TIBCO.EMS (in TIBCO.EMS.dll)
Syntax
public class Session |
Public Class Session |
public ref class Session |
Remarks
Sessions combine several roles:
- Factory for message producers and consumers.
- Factory for message objects.
- Factory for temporary destinations.
- Factory for dynamic destinations.
- Factory for queue browsers.
- Serializer for inbound and outbound messages.
- Serializer for asynchronous message events (or message listeners) of its consumer objects.
- Cache for inbound messages (until the program acknowledges them).
- Transaction support (when enabled).
Single Thread
The JMS specification restricts programs to use each session within a single thread.
Associated Objects | The same single-thread restriction applies to objects associated with a session—namely, messages, message consumers, durable subscribers, message producers, queue browsers, and temporary destinations (however, static and dynamic destinations are exempt from this restriction). |
Corollary | One consequence of this rule is that all the consumers of a session must deliver messages in the same mode—either synchronously or asynchronously. |
Asynchronous | In asynchronous delivery, the program registers message handler events or message listeners with the session’s consumer objects. An internal dispatcher thread delivers messages to those event handlers or listeners (in all the session’s consumer objects). No other thread may use the session (nor objects created by the session). |
Synchronous | In synchronous delivery, the program explicitly begins a thread for the session. That thread processes inbound messages and produces outbound messages, serializing this activity among the session’s producers and consumers. Methods that request the next message (such as MessageConsumer.Receive) can organize the thread’s activity. |
Close | The only exception to the rule restricting session calls to a single thread is the method Close()()(); programs can call Close from any thread at any time. |
Transactions
A session has either transaction or non-transaction semantics. When a program specifies transaction semantics, the session object cooperates with the server, and all messages that flow through the session become part of a transaction.
- When the program calls Commit()()(), the session acknowledges all inbound messages in the current transaction, and the server delivers all outbound messages in the current transaction to their destinations.
- If the program calls Rollback()()(), the session recovers all inbound messages in the current transaction (so the program can consume them in a new transaction), and the server destroys all outbound messages in the current transaction.
After these actions, both Commit()()() and Rollback()()() immediately begin a new transaction.
Inheritance Hierarchy
System..::.Object
TIBCO.EMS..::.Session
TIBCO.EMS..::.QueueSession
TIBCO.EMS..::.TopicSession
TIBCO.EMS..::.XASession
TIBCO.EMS..::.Session
TIBCO.EMS..::.QueueSession
TIBCO.EMS..::.TopicSession
TIBCO.EMS..::.XASession