This topic describes properties that you can configure to enable
workload management of connections to a service integration bus for JMS applications.
The same properties can also be used to control the client connection topology.
For example, connection options can be specified such that client applications
only connect to a set of client serving messaging engines and never to the
set of destination serving messaging engines in a bus.
The properties for connecting JMS applications to a bus are for administrator
interest; the JMS applications are unconcerned with connections to the bus,
beyond using a JMS connection factory or JMS activation specification (for
message-driven beans).
The general aim of connecting to a bus is to connect to a suitable messaging
engine that provides the message point for
a JMS destination that the application wants to use. Applications running
inside an application server can locate a suitable messaging engine and connect
directly to the selected messaging engine. Client applications running outside
of an application server cannot locate a suitable messaging engine themselves,
these clients must use a bootstrap server to locate a suitable messaging engine
on behalf of the client application.
When an application connects to the bus, the bus chooses a suitable messaging
engine based on administrative properties of the JMS connection factory or
activation specification that the application uses. For maximum connection
flexibility, you can leave most properties to default, the only required connection
property is the name of the bus that the application is to connect to.
The bus uses the following general process to choose a suitable messaging
engine, based on the value you select for the Connection proximity property.
If you understand this process, you can better configure the properties that
control how the bus chooses messaging engines.
- If a Target group is specified then the process
checks the nearest messaging engine that supports the required Remote
transport chain and is a member of the target group in the bus.
If the messaging engine is within the specified Connection proximity it
is chosen as a suitable messaging engine for the application to connect to.
- If a Target group is not specified then the process
checks the nearest messaging engine that supports the required Remote
transport chain in the bus. A messaging engine in the same server
is nearer than a messaging engine in the same host, which is nearer than a
messaging engine in another host. If the messaging engine is within the specified Connection
proximity it is chosen as a suitable messaging engine for the
application to connect to.
- If the selected messaging engine is not within the specified Connection
proximity, then the Target significance is
used. If the Target significance is set to Required,
then no connection is possible and the connection request is rejected with
no suitable messaging engine being available. If the Target significance is
set to Preferred then the target group is ignored and the nearest messaging
engine that supports the required Remote transport chain is
used. If no messaging engine is found then the connection request is rejected
with no suitable messaging engine being available.
The following rules are used to test the connection proximity for a selected
messaging engine:
- If the Connection proximity value is Bus, then the selected
messaging engine is used.
- If the Connection proximity value is Host, and the selected
messaging engine is in the same host as the application (or bootstrap server),
then the selected messaging engine is used. Otherwise, one of the following
options is chosen.
- If the selected messaging engine is not in the same host as the application
(or the bootstrap server), and the Target significance is
set to Required, then no connection is possible and the connection
request is rejected with no suitable messaging engine being available.
- If the Target significance is set to Preferred then
the nearest messaging engine - in the same host - that supports the required Remote
transport chain is used
- If no suitable messaging engine is found, then the connection request
is rejected.
- If the Connection proximity value is Server, and the
selected messaging engine is in the same server as the application (or bootstrap
server), then the selected messaging engine is used. Otherwise, one of the
following options is chosen.
- If the selected messaging engine is not in the same server as the application
(or is in the bootstrap server), and the Target significance is
set to Required, then no connection is possible and the connection
request is rejected with no suitable messaging engine being available.
- If the Target significance is set to Preferred then
the nearest messaging engine - in the same server - that supports the required Remote
transport chain is used
- If no suitable messaging engine is found, then the connection request
is rejected.
When a connection is made to a messaging engine in the same server as the
application, the connection is made directly through memory, so the Remote
transport chain is ignored