Software AG Products 10.5 | Administering Integration Server | Configuring Integration Server for JMS Messaging | Monitoring a Connection Factory Object for Changes | How Integration Server Updates the Connection
 
How Integration Server Updates the Connection
After Integration Server determines that the cluster connection factory changed, Integration Server suspends all activity associated with the connection established for the associated JMS connection alias. Then Integration Server updates the connection. To ensure that in-flight messages are not lost and that duplicate messages are not introduced, Integration Server completes the following sequence of tasks as part of updating the connection:
1. Suspends any JMS triggers that use the connection that needs to be restarted. The JMS trigger does not retrieve any more messages from the webMethods Broker, but continues processing any messages it has already retrieved. After the JMS trigger processes all the retrieved messages, Integration Server disables the JMS trigger.
2. Temporarily blocks any new threads for services that send a JMS message using the JMS connection alias for the connection that needs to be restarted, specifically pub.jms:send, pub.jms:sendAndWait, and pub.jms:reply.
The value of the watt.server.jms.connection.update.blockingTime server configuration parameter specifies the maximum amount of time the pub.jms* services will wait for a connection while the connection used by the service is being updated. The default is 1000 milliseconds. If Integration Server does not restart the connection before the blocking time elapses, Integration Server throws an ISRuntimeException.
3. Waits for any pub.jms* services that are in the midst of using the connection to send JMS messages to execute to completion.
The value of the watt.server.jms.connection.update.restartDelay server configuration parameter determines how long Integration Server waits for services sending JMS messages to execute to completion before restarting the connection. If the restart delay elapses before the pub.jms*services finish executing, Integration Server throws an ISRuntimeException.
4. Stops the connection for the JMS connection alias.
5. Refreshes the connection using the new cluster connection factory object. Refreshing the connection effectively enables the JMS triggers.
6. Releases any blocking threads for pub.jms* services.