¿Cuál sería una buena y buena manera de desactivar temporalmente un detector de mensajes? El problema que quiero resolver es:Cómo deshabilitar temporalmente un detector de mensajes
- mensaje JMS es recibida por un receptor de mensajes
- consigo un error al intentar procesar el mensaje.
- Espero que mi sistema se prepare nuevamente para poder procesar el mensaje.
- Hasta que mi sistema esté listo, no quiero más mensajes, por lo que ...
- ... Quiero desactivar el detector de mensajes.
- Mi sistema está listo para procesar nuevamente.
- Se procesa el mensaje fallido y se confirma el mensaje JMS.
- Habilita el detector de mensajes nuevamente.
En este momento estoy usando Sun App Server. Inhabilité el detector de mensajes configurándolo como nulo en MessageConsumer, y lo habilité de nuevo usando setMessageListener (myOldMessageListener), pero después de esto no recibo más mensajes.
Oh, realmente fue así de simple. Esperaba que más hilos llamaran al método onMessage. ¡Gracias un montón! – davidi
Las conexiones son seguras para subprocesos. Las sesiones de abajo (sesiones, consumidores, productores) no son seguras para subprocesos. Tu código necesita evitar el acceso multiproceso. Para hacer cumplir eso, JMS no podía procesar múltiples llamadas de escucha en un consumidor. –
Acabo de notar que la especificación JMS especifica explícitamente este comportamiento de entrega en serie. Es la sección 4.4.16 de la especificación JMS 1.0.2. En el pasado, pensé que solo estaba implícito en las reglas de enhebrado. –