Pregunta

Proceso A es el cálculo de los valores para los objetos de a1, a2, a3, etc., y está enviando los resultados al middleware cola (RabbitMQ). Los consumidores leen y procesan la cola de estos resultados aún más. Periódicamente procesar A tiene que enviar una instantánea de estos valores, para que los consumidores pudieran hacer algunos otros cálculos. Los valores de estos objetos pueden cambiar de forma independiente. La cola puede tener este aspecto A1, A1, A2, A1, A2, A2, A3 ... Los consumidores procesar cada elemento en la cola. La instantánea ha de contener todos los objetos y los consumidores procesará este mensaje para todos los objetos de una sola vez.

Así que el requisito es tener una cola así: A1, A1, A3, A2, A2, [instantánea, a1, a2, a3], A3, A1 ... El problema es que estos artículos son de diferentes tipos : un tipo de objetos como A1, A2 y otra para una instantánea. Esto significa que deben ser procesadas en un diferentes colas, pero en ese caso no es una condición de carrera:. Consumidores podrían procesar objetos antes de procesar una instantánea

¿Hay algún patrón para resolver este problema (muy común)? Estamos utilizando RabbitMQ de la cola de mensajes.

¿Fue útil?

Solución

Usar una sola cola por consumidor y un tipo de contenido prefijo para indicar el tipo de mensaje que está siendo entregado. En creo que puede ser un atributo 'tipo' en los mensajes AMQP, pero nunca he usado, así que no sé si es aplicable a este problema.

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