JeroMQ envía latidos desde el mismo hilo.
Tengo un problema con el modo PUB/SUB, donde el SUB a veces deja de recibir datos de forma aleatoria (una vez al día aproximadamente). Quiero agregar un mensaje de latido personalizado desde el PUB al SUB cada segundo, pero necesito enviarlo desde el mismo hilo porque el PUB no es seguro para subprocesos. Para hacer eso, puedo usar algún temporizador/programador de Java para realizarlo cada segundo, pero el problema es que el temporizador/programador crea un nuevo hilo.
Estoy recibiendo datos de un websocket externo en el PUB y no veo una forma de enviar un latido como todos están hablando. La única forma sería agregar un proxy usando XPUB-XSUB…
¿Alguna idea de cómo se podría hacer eso?
davy.ai
Como experto en TI especializado en Java, ZeroMQ y Jeromq, recomiendo utilizar un ExecutorService de un solo hilo para programar los mensajes de latido. Esto asegurará que los mensajes sean enviados desde el mismo hilo y no se creen hilos adicionales.
Aquí tienes un fragmento de código de ejemplo en Java que debería ayudarte a implementarlo:
En este ejemplo, estamos creando un executor service de un solo hilo utilizando el método
Executors.newSingleThreadExecutor()
. Luego, estamos utilizando el métodoscheduleAtFixedRate()
para programar el mensaje de latido para que se ejecute cada segundo.Dentro de la expresión lambda, estamos enviando el mensaje
heartbeat
utilizando el socketPUB
. Esto asegura que el mensaje solo se envíe desde el mismo hilo que está ejecutando elExecutorService
.Espero que esto te ayude a resolver tu problema con el modo PUB/SUB. ¡Avísame si tienes alguna otra pregunta!