es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Configuración de conmutación por error y retorno a la configuración maestro/reserva de JMS en Red Hat 7.2 EAP.

Utilizamos Red Hat 7.2 EAP. Tenemos X número de productores en Y número de máquinas que envían mensajes a una cola JMS en una máquina remota. La cola JMS está configurada con un maestro y un respaldo. X número de consumidores en Y número de máquinas están consumiendo mensajes de la cola. El maestro y el respaldo están en máquinas diferentes. Cuando el maestro se cae, los productores y los consumidores necesitan seguir procesando mensajes. Cuando el maestro vuelve, los consumidores y productores deben volver a fallar al maestro.

He leído los documentos publicados por Red Hat varias veces y lo mejor que puedo entender es que esto debería hacerse fácilmente. Sin embargo, cuando los consumidores o productores se inician y el maestro está abajo, no tienen forma de conectarse a la cola de respaldo. ¿Cómo manejan las personas esta situación? ¿Los consumidores y productores deben programarse para conocer el maestro y el respaldo y luego intentar conectarse al respaldo si el maestro no está disponible o falla? La documentación me hace creer que la conmutación por error debería ser automática en el sentido de que el maestro comunica la ubicación del respaldo al cliente cuando se conecta por primera vez. Si hay docenas de máquinas involucradas, ¿cómo se configura el maestro/respaldo en los consumidores y productores? ¿Cada uno de los nodos de consumidor/productor debe configurarse con direcciones IP? ¿Cómo hacen las personas para escalar este tipo de cosas?

Actualmente configuramos los productores y consumidores para que se conecten de la siguiente manera:

final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
env.put(Context.PROVIDER_URL, System.getProperty(Context.PROVIDER_URL, PROVIDER_URL));
env.put(Context.SECURITY_PRINCIPAL, DEFAULT_USERNAME);
env.put(Context.SECURITY_CREDENTIALS, DEFAULT_PASSWORD);
namingContext = new InitialContext(env);
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para manejar la situación en la que el maestro se cae en una cola JMS con configuración de respaldo, los consumidores y productores pueden programarse para realizar automáticamente un cambio de respaldo a la cola de respaldo si la cola maestra no está disponible. Esto se puede lograr configurando el cliente JMS para utilizar un transporte de conmutación por error.

    El transporte de conmutación por error es responsable de redirigir automáticamente a los clientes al servidor de respaldo cuando el servidor principal se cae. Para utilizar el transporte de conmutación por error, es necesario especificar la URI de conexión para el cliente JMS. Esta URI debe incluir una lista de todos los servidores disponibles en el formato de una lista separada por comas o una cadena de lista de URIs.

    Por ejemplo, si la URL del bróker principal es tcp://localhost:61616 y la URL del bróker de respaldo es tcp://localhost:61617, la URI de conexión se puede especificar de la siguiente manera:

    String uri = "failover:(tcp://localhost:61616,tcp://localhost:61617)";
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(uri);
    

    Con esta configuración, el cliente se conectará automáticamente al bróker de respaldo si el bróker principal se cae.

    En cuanto a la escalabilidad, se recomienda utilizar un sistema de gestión de configuración separado como Puppet o Chef para gestionar la configuración de todos los clientes y servidores involucrados. De esta manera, las direcciones IP y otras configuraciones se pueden gestionar de forma centralizada y propagarse a todas las máquinas involucradas.

    En resumen, para manejar el cambio de respaldo en colas JMS con una configuración de maestro y respaldo, se recomienda utilizar el transporte de conmutación por error con el cliente JMS y gestionar la configuración de forma centralizada utilizando un sistema de gestión de configuración.

Comments are closed.