BEA Logo BEA Tuxedo Release 8.0

  BEA Home  |  Events  |  Solutions  |  Partners  |  Products  |  Services  |  Download  |  Developer Center  |  WebSUPPORT

 

   Tuxedo Documentation   |   Introducing BEA Tuxedo ATMI   |   Local Topics   |   Previous Topic   |   Next Topic   |   Contents

 


What Are IPC Message Queues?

The BEA Tuxedo system uses IPC message queues to support communication between processes that are executed on a particular machine. IPC message queues are transient memory areas, typically provided by the underlying operating system, used for communication between clients and servers. By default, each server has its own IPC message queue on which to receive requests and replies, referred to as a Single Server, Single Queue (SSSQ). If you prefer, however, you can override the default and assign multiple servers to read from the same queue. This arrangement is referred to as Multiple Servers, Single Queue (MSSQ). You can use both SSSQ and MSSQ sets in the same application. Servers can be assigned to either type of queue.

When to Use Single Server, Single Queues (SSSQ)

To understand how SSSQ sets work, consider an analogy that can be found in your supermarket, where there may be several checkout lines. Each line is like a separate queue in which customers wait for a clerk at one register, who determines how fast that line is serviced. If a delay is introduced by one person, each subsequent person is also delayed on that line, but the delay has no effect on other lines. This scheme can be used to load balance and throttle work across several servers offering different kinds of services. Customers with relatively small requests can be processed by a server with a separate queue, thus speeding throughput by guaranteeing available cycles or registers for small requests.

When to Use Multiple Server, Single Queue (MSSQ) Sets

The MSSQ scheme offers additional load balancing through IPC messaging, which is offered by the operating system. One queue is accommodated by several servers offering identical services at all times. If the server queue to which a request is sent is part of an MSSQ set, the message is dequeued to the first available server. Thus load balancing is provided at the individual queue level.

When a server is part of an MSSQ set, it must be configured with its own reply queue. When the server makes requests to other servers, the replies must be returned to the original requesting server; they must not be dequeued by other servers in the MSSQ set.

In many applications, Multiple Server, Single Queue (MSSQ) sets can play an important role. They are ideal when you need to minimize the total waiting time for services. If it is unacceptable for a service request to wait while a server capable of fulfilling that request remains idle, MSSQ sets should be used.

We recommend using an MSSQ set in the following situations:

Note: For fault tolerance, you should always use MSSQ sets with two or more servers.

An MSSQ set is inappropriate when long messages are being passed to services. Long messages can cause a queue to be exhausted. When a queue is exhausted, either non-blocking sends fail or blocking sends block.

We recommend against using an MSSQ set in the following situations:

Example

To consider how MSSQ sets work, consider an analogy that can be found in your bank, where several tellers performing identical services handle a single line of customers. The next available teller always takes the next person in line. In this scenario, each teller must be able to perform all customer services. In a BEA Tuxedo environment, all servers set up to share a single queue must offer the identical set of services at all times. The advantage of MSSQ sets is that they offer a second form of load balancing at the individual queue level.

 

back to top previous page