¿Qué debe hacer el cliente mientras el servidor TIBCO EMS intenta la conmutación por error?

StackOverflow https://stackoverflow.com/questions/234782

  •  04-07-2019
  •  | 
  •  

Pregunta

La guía del usuario de TIBCO EMS (pág. 292) dice:

  

El servidor de respaldo funcionará indefinidamente para que A) se convierta en el   servidor primario o B) se vuelve a conectar al servidor primario. También dice    los clientes pueden recibir una notificación de conmutación por error cuando el cambio se realiza correctamente (consulte también la referencia TIBCO EMS .NET pág. 220).

Tengo algunas preguntas derivadas de estos hechos ...

  1. ¿Qué tipo de errores ocurren en el lado del cliente mientras los servidores intentan realizar una conmutación por error / reconectar?

  2. ¿Cuál es la respuesta apropiada del cliente?

    • ¿Obtener nuevos objetos de conexión de ConnectionFactory hasta que uno funcione?
    • ¿Esperar la notificación de conmutación por error? (¿las instancias actuales de Connection están reparadas en este momento? ¿o necesito obtener una nueva instancia?)

Espero que el escenario sea claro, cualquier información o consejo relacionado sería apreciado también.

¿Fue útil?

Solución

Al menos puedo responder # 1 arriba.

Si ha habilitado Tibems.SetExceptionOnFTSwitch (true); y ha configurado un controlador de excepciones para capturar los mensajes que el servidor envía al cliente, verá lo siguiente:

Para fallos de conexión de servidor único, sin tolerancia a fallos: " La conexión se ha terminado " ;.

Para fallos de conexión tolerantes a fallas: " Connection ha realizado un interruptor tolerante a fallas a "

Si intenta publicar mientras la conexión está inactiva, se lanza una excepción TIBCO.EMS.IllegalStateException con el " Producer está cerrado " mensaje.

para el n. ° 2 anterior, creo que la respuesta es permitir que la biblioteca EMS maneje tanto como sea posible. Una vez que la funcionalidad de reconexión EMS funcionó, intentó volver a conectarse con gracia hasta que el servidor estuvo disponible nuevamente y una vez que se volvió a conectar, fue como si nunca hubiera un problema. El único problema es probablemente si intentas publicar un mensaje antes de que vuelva la conexión ems. Aquí es donde entra el controlador de excepciones. Una vez que se le notifica que está en modo de conmutación por error, puede ajustar el manejo de excepciones en el lado del editor para suprimir el error hasta que se restablezca la conexión. Lo que no sé es cómo saber cuándo ha agotado todos los intentos de reconexión.

De todos modos, parece que nuestros dos mundos están estrechamente relacionados cuando se trata de EMS. Espero que nuestros hallazgos (basados ??en sus comentarios sobre mis preguntas) lo ayuden.

Otros consejos

Usamos TEMS (Tibco EMS, un producto de Tibco para WCF), por lo que se convierte en un enlace personalizado. Intentamos romperlo haciendo cosas como hacer rebotar al servidor para forzar el cambio y funciona realmente bien. asegúrese de que está utilizando la versión 1.2, no la 1.1, ya que no puede hacer otra cosa que no sea el reconocimiento del cliente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top