Antes que nada, soy nuevo en ZeroMQ y en los sistemas de colas de mensajes, por lo que lo que estoy tratando de hacer se puede resolver con un enfoque diferente. Estoy diseñando un sistema de mensajería que hace lo siguiente:¿Cómo puedo controlar/administrar la cola en ZeroMQ?
Varios clientes se conectan a un corredor y enviar el identificador de un elemento que necesita ser procesada. El cliente se desconecta inmediatamente y no espera una respuesta.
El intermediario envía artículos a los trabajadores, un artículo por trabajador, para realizar algún procesamiento. Cada devolución devuelve una señal de que el procesamiento se completó.
Tengo una configuración de sistema rudimentario que está procesando las peticiones/respuestas correctamente, pero también me gustaría ser capaz de hacer lo siguiente:
consulta al corredor para ver cuántos procesos en realidad están funcionando con los trabajadores y cuántos simplemente están esperando ser ejecutados.
Haga que el intermediario se asegure de que solo se está ejecutando un proceso por identificación: si llega un ID duplicado y ese elemento no está siendo procesado por un trabajador, no lo agregue a la cola.
Estoy utilizando una configuración de sondeo con conectores intermedios/distribuidores. El código que estoy usando es muy similar al this example from Ian Barber.
Mi primera inclinación (aunque no estoy seguro de cómo implementarlo en zmq) es que el bróker realice un seguimiento de los identificadores que se han recibido, y aquellos que están siendo procesados activamente por los trabajadores. Parece que el intermediario reenvía las solicitudes a los trabajadores de inmediato, independientemente de si están o no disponibles para ejecutar el procesamiento. Los trabajadores luego ponen en cola los identificadores y los procesan en orden. Esto no es ideal ya que estoy buscando poder monitorear y controlar lo que está sucediendo en el sistema centralmente para lograr confiabilidad.
De todos modos, cualquier sugerencia, sugerencia o ejemplo de este tipo de configuración sería muy apreciada.
sólo un pensamiento, ZMQ es bastante barebones/ligero, tal vez debería echar un vistazo a los productos como activemq, RabbitMQ o OpenMQ, vienen con amplias posibilidades de gestión. productos como activemq y openmq están bastante centrados en Java pero tienen enlaces muy funcionales para muchos lenguajes de programación. – fvu
@fvu - gracias - Tenía la esperanza de poner en marcha zmq pero verificaría algunas de las otras bibliotecas, en particular, creo que RabbitMQ podría funcionar. – jonstjohn