Point-to-point messaging uses queue destinations, where each queue destination represents a message queue.
A service integration queue destination is localized in a particular bus member (application server or server cluster). When a producer sends a message to the queue destination, the service integration bus delivers the message to a messaging engine in that bus member. The messaging engine then delivers the message to a consumer; if necessary, the messaging engine queues the message until a consumer is ready to receive it.
Applications can send messages to a queue destination in a remote bus, as long as a connection between the buses is configured. You can configure a bus to connect to, and exchange messages with, other messaging networks. To do this, you must configure a foreign bus definition. A foreign bus definition encapsulates information related to the remote messaging network, such as the type of the foreign bus and whether messaging applications are allowed to send messages to the foreign bus. The local bus knows of the destination bus through a foreign bus definition. If the bus that is directly connected to the local bus does not hold the specified destination, more service integration bus links are used to flow the message to the next bus on the route to the destination bus. When the message enters the destination bus, that bus attempts to deliver the message to the intended destination.
To send messages to a destination that is defined in a foreign bus, an application specifies the bus name (that is, the foreign bus) and the destination name in the JMS destination object (queue or topic). You do not need to configure any destination objects in the local bus. Service integration uses the definition of the foreign bus that is configured on the local bus. This definition includes default values for the destination attributes, such as the default quality of service. These default values apply to all destinations in that foreign bus.
You can configure a queue destination as a foreign destination or an alias destination, as described in the information about bus destinations.
When an application sends messages to a destination and a foreign destination or alias destination is not configured, the destination defaults are derived from the destination defaults that are specified for the foreign bus definition.
In this example, service integration in Bus 1 uses attributes of its definition of the foreign bus, Bus 2, as defaults for its destination targetQueue in the foreign bus. Service integration cannot use configuration information that is scoped to a foreign bus. For example, service integration in Bus 1 is not aware of the Bus 2 definition of targetQueue.
In the following figure, a JMS application connected to Bus 1 creates a producer for a queue in Bus 2. The application uses JNDI to obtain a JMS destination object, which identifies the service integration bus queue in Bus 2. An application can obtain a JMS destination in other ways, for example, from the JMSReplyTo property of a JMS message.
Knowledge that a destination exists is held only by the bus that hosts that destination. For an application to send messages to a destination in a foreign bus successfully, you must ensure that the destination exists; the local bus cannot verify that the destination exists. If a message arrives through the service integration bus link for a destination that does not exist in the foreign bus, the message is routed using the exception handling configuration of the receiving service integration bus link.