You can configure properties 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 used by the administrator. The JMS applications do not specify
how to connect 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 is 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 Cluster, then the selected messaging engine
is used if it is in the same cluster as the application (or the bootstrap
server). Otherwise, one of the following options is chosen.
- If the selected messaging engine is not in the same cluster 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 cluster - 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 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.