Mecanismos para la detención de motores de mensajería
Existen varios mecanismos diferentes que puede utilizar para detener los motores de mensajería. También puede especificar dos grados de urgencia distintos: immediate (inmediato) y force (forzar). Al detener un motor de mensajería se impide que envíe mensajes.
- Mediante la consola administrativa para detener el motor de mensajería
- Mediante el mandato stop de JMX
- Mediante el mandato stopServer para detener el servidor de aplicaciones que aloja el motor de mensajería
- Inmediata
- En modalidad inmediata, el motor de mensajería se detiene cuando han finalizado todas las operaciones de mensajería actuales en el momento de la solicitud de detención. No se envía ninguna notificación a la aplicación para indicar que
el motor de mensajería se está deteniendo. Una vez emitido el mandato de detención, el
motor de mensajería no permite que se inicie ninguna operación nueva.
Para cada conexión existente, el motor de mensajería espera que se complete la operación actual, a menos que la operación bloquee el proceso en el motor de mensajería como, por ejemplo, una operación de recepción. En este caso, se interrumpe la operación. Los consumidores asíncronos pueden finalizar sus operaciones, aunque el proceso del mensaje actual puede llevarles una cantidad de tiempo arbitraria. El motor de mensajería retrotrae las transacciones activas y no permite más operaciones en esa conexión. Cuando todas las conexiones están en este estado no válido, el motor de mensajería se detiene.
- Forzar
- En la modalidad de forzar, el motor de mensajería se detiene de modo que cualquier transacción actual se vacía previamente y las aplicaciones se desconectan forzadamente.
La modalidad de forzar es como la modalidad inmediata con la excepción de que la detención del motor de mensajería interrumpe las operaciones de mensajería en hebras de aplicación que estén realizándose cuando se emite el mandato de detención. En lugar de esperar a que las operaciones de mensajería finalicen, el motor de mensajería las interrumpe y no permite ninguna operación adicional. Cuando todas las conexiones están en este estado no válido, el motor de mensajería se detiene.
La modalidad de forzar completa la conclusión del motor de mensajería lo más rápido posible. Un reinicio posterior del motor de mensajería puede tardar más tiempo que cuando se detiene con la modalidad inmediata, porque se necesitan más acciones de recuperación. Por ejemplo, la detención en modalidad de forzar puede dejar transacciones dudosas y deberá gestionar estos mensajes como se describe en Resolución de transacciones dudosas.
Es posible escalar una detención inmediata que tarda mucho en forzar una detención.
Mecanismo de detención | Inmediata | Forzar |
---|---|---|
Consola administrativa | Sí | Sí |
Mandato stop de JMX | Sí | Sí |
Mandato stopServer | Sí | No |