Message Routing On EMS
The following table describes about the EMS configuration properties.
Property | Description | Default Value |
---|---|---|
orchestratorInboundQueue | Queue for the Orchestrator to listen to all southbound replies with an originator header. | tibco.aff.orchestrator.inbound.queue |
orchestratorInboundNoOriginatorQueue | Queue for the Broker Service to listen to all southbound replies without an originator header. | tibco.aff.orchestrator.inbound.no.originator.queue |
Bridges are introduced at the EMS level to enhance message handling between the southbound service and the orchestrator. These bridges enable efficient routing of replies based on the presence or absence of an originator header in the message.
Southbound Message Routing
Message Bridging
When the southbound service sends a reply to the reply queue, EMS bridges the message from the source queue to a designated target queue using a selector.
-
With Originator Header: Replies with an originator header are routed to
orchestratorInboundQueue
. -
Without Originator Header: Replies lacking an originator header are routed to
orchestratorInboundNoOriginatorQueue
.
For example, if the southbound service sends a Plan Item Execute Reply to the tibco.aff.orchestrator.planItem.execute.reply
queue, depending on whether the originator header is present the service is routed to either the orchestratorInboundQueue
queue or the orchestratorInboundNoOriginatorQueue
queue.
This bridging mechanism allows the system to adapt seamlessly, requiring no modifications from the customer. The orchestration and broker services are configured to listen on their respective queues:
-
Orchestrator Service: Listens on
orchestratorInboundQueue
. -
Broker Service: Listens on
orchestratorInboundNoOriginatorQueue
.
The introduction of message bridging offers several benefits over the previous model, which relies on microservices having a fixed number of listeners on each queue:
-
Thread Utilization: Having fixed listeners on multiple queues can lead to blocked threads when there are no messages, which waste resources.
-
Load Balancing: Employing a fixed number of threads on a single queue to process all incoming messages ensures efficient load balancing and optimal resource utilization.
By centralizing message processing to a single queue and employing intelligent routing based on message headers, the system significantly improves efficiency and flexibility in managing southbound messages. This approach minimizes thread blocking and enhances the system's ability to handle varying message volumes effectively.