Comportamiento ODBC de WebSphere Message Broker con una instancia de flujo


Pregunta: ¿Cuál es el comportamiento de IBM Websphere Message Broker (WMB) sobre una conexión ODBC relativo al número de instancias de flujo?

Respuesta:
WMB usa internamente un pool de conexiones ODBC. Cada instancia de flujo crea y maneja la conexión ODBC cuando lo requiere.

  • Comportamiento con una única instancia de flujo

Un único hilo en un flujo de mensajes está siempre curriendo tratando de leer mensajes de entrada. Cuando una conexión ODBC es creada, se cachea para futuros usos por el mismo hilo. Si el parámetro maxConnectionAge se configura en el grupo de ejecución, este hilo libera la conexión una vez que ocurre el timeout (esto es, una vez que el tiempo de la conexión expira). La conexión nunca se liberará si el parámetro se establece a -1.

El parámetro maxConnectionAge puede ser usado mediante el siguiente comando:

  • Comportamiento con varias instancias del flujo

Para instancias de flujo adicionales, el hilo de la instancia adicional renuncia a su conexión con la base de datos tan pronto como regresa al pool del hilo (cuando no hay mas mensajes esperando ser procesados). Esto puede ser incluso antes del retardo establecido por la base de datos para el timeout (maxConnectionAge).

Si un usuario quisiera retener las conexiones a base de datos para estos hilos de instancias adicionales, el parámetro maxConnectionAge, debe tener un valor de -1. Con esta configuración, las conexiones a base de datos nunca serán liberadas por inactividad.

Si establecemos maxConnectionAge a -1 entonces las conexiónes nunca se liberan. S ise establece un valor positivo, entonces se cerrarán al tiempo requerido sólo para el flujo principal, y las instancias de flujo adicionales cerrarán sus conexiones cuando regresen al pool. Además podemos exportar la variable de entorno en el ID del perfil del servicio de broker MQSI_DATABASE_IDLE_CONNECTIONS_DONT_ENDINSTANCE=YES.

Para un valor positivo de maxConnectionAge con la variable de entorno definida, el flujo principal se libera por su propio valor, pero las instancias adicionales no cierran su conexión cuando regresan al pool. Se mantienen abiertas hsata que los hilos vuelvan a ser usados de nuevo.

If you set the maxConnectionAge to -1 then the connections never idle out. If you set it to a positive value, then they idle out at the required time only for the main thread and additional instance threads
close their connections when they return to the pool. You can also export the env variable in broker service Id’s profile –
MQSI_DATABASE_IDLE_CONNECTIONS_DONT_ENDINSTANCE=YES.
For positive value for parameter maxConnectionage with the env variable set, the main thread idles out as per its value, but the additional instance threads do not close their connection when they return to the pool. They are kept open until the threads are used again.

Fuente:
IBM.