Inbound Message Delivery
These six phases define the precise terminology that describes the delivery of an inbound message:
Phase | Description | |
---|---|---|
1 | Receive | A transport presents a message to a subscriber. |
2 | Match | If a subscriber has a content matcher, it filters the message. A matching message advances to the next phase. A message that does not match is discarded. |
3 | Distribute | The library adds the message to the event queue associated with the subscriber. |
4 | Dispatch | A dispatch call in your program removes messages from the event queue, and invokes the appropriate callback. |
5 | Process | Your callback gets data from the message and uses it. |
6 | Release | The callback returns, releasing the message and its resources. |
Phases, Pipelines, and Threads
Consider the six delivery phases as two pipelines. Event queues serve as a stopover point between the two pipelines:
- The receive pipeline includes the receive, match, and distribute phases.
- The dispatch pipeline includes the dispatch, process, and release phases.
Specific threads do the work that moves a message through each pipeline. Each thread requires CPU resources to do that work.
- One or more receive threads drive the receive pipeline. Inbound data arrives on a transport’s data source.
- One or more dispatch threads drive the dispatch pipeline.
The functional definition of a dispatch thread is any program thread that calls an event queue’s dispatch method. Your application program determines the number of dispatch threads required to dispatch and process messages from all its event queues in a timely and efficient manner. (Developers: record the number of dispatch threads on each programs’ application coordination form.)
With regular event queues, receive threads are internal to the TIBCO FTL library, and the library determines the number of receive threads. In contrast, with inline event queues, the application’s dispatch thread also serves the functional role of a receive thread, as it combines all six phases into a single pipeline (see Inline Mode).
Both pipelines begin by polling for available messages: the receive phase polls a transport’s data source, and the dispatch phase polls an event queue. For the details of polling, see “Receive Spin Limit” in TIBCO FTL Administration.