Administrative properties for JMS connections to a bus
We 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, we 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 we select for the Connection proximity property. If we understand this process, we 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.
Related:
JMS connection factories and service integration JMS queue resources and service integration JMS topic resources and service integration Why and when to pass the JMS message payload by reference Configure a queue connection factory for the default messaging provider Configure a topic connection factory for the default messaging provider Configure an activation specification for the default messaging provider Default messaging provider unified connection factory [Settings] Default messaging provider queue connection factory [Settings] Default messaging provider topic connection factory [Settings]