Para middleware orientado a mensajes que no admite mensajes de prioridad consistentemente (como AMQP) cuál es la mejor manera de implementar el consumo prioritario cuando las colas solo tienen semántica FIFO ? El caso de uso general sería un sistema en el que los consumidores reciben mensajes de mayor prioridad antes de los mensajes de menor prioridad cuando existe un gran retraso de mensajes en cola (s).En un sistema FIFO Qeueing, ¿cuál es la mejor manera de implementar mensajería de prioridad
Respuesta
Dado que solo se admite FIFO para una cola determinada, por supuesto deberá introducir múltiples colas, un intermediario o un consumidor más complejo.
Se pueden gestionar varias colas de varias formas. El productor y el consumidor podrían acordar tener dos colas entre ellos, uno para alta prioridad y otro para tareas en segundo plano.
Si su productor está restringido a una sola cola, pero tiene control sobre el consumidor, considere la posibilidad de introducir un enrutador de despliegue en la ruta. Entonces productor-> Enrutador es una sola cola, y el enrutador tiene dos colas para el consumidor.
Otra forma de abordarlo, que probablemente sea menos que ideal, sería hacer que el consumidor mueva un hilo al frente de la cola y luego despachar el trabajo internamente. Algo así como la versión anterior del enrutador, pero dentro de una sola aplicación. Esto tiene la desventaja de tener múltiples mensajes en vuelo dentro de su aplicación, lo que puede complicar la recuperación en caso de falla.
No olvide considerar la inanición de los eventos de baja prioridad, sean los que sean, si algunos de ellos se deben procesar incluso si todavía hay eventos de mayor prioridad.
Esto es más o menos exactamente con quién hemos implementado esta estrategia para un proyecto en funcionamiento. Varias colas para un sistema de prioridad gradual. No nos preocupamos demasiado por la inanición porque podemos republicar mensajes importantes de menor prioridad con mayor prioridad en tales casos; el trabajo redundante se maneja, en su mayor parte, ideopotentemente para permitir esto. – quaternion
- 1. ¿Cuál es la mejor manera de implementar un "temporizador"?
- 2. ¿Cuál es la mejor manera de implementar params en JavaScript?
- 3. ¿Cuál es la mejor manera de implementar protocolos?
- 4. ¿Cuál es la mejor manera de implementar una aplicación Pylons?
- 5. ¿Cuál es la mejor manera de implementar restricciones de entrada en un TextBox en C#?
- 6. ¿Cuál es la mejor manera de implementar un búfer para un control de edición de texto?
- 7. ¿Cuál es la mejor manera de implementar y diseñar paredes en un juego de fichas isométricas?
- 8. Cuál es la mejor manera de implementar un campo de contador en MySQL
- 9. ¿Cuál es la mejor manera de implementar un protocolo de solicitud/respuesta utilizando akka y scala?
- 10. ¿Cuál es la mejor manera de poner un sistema de traducción en el sitio web php?
- 11. Cuál es la mejor manera de probar un componente EJB3 sin tener que implementar el componente
- 12. cuál es la mejor manera de implementar FTP en un sitio asp.net mvc
- 13. ¿Cuál es la mejor manera de implementar relaciones de enlace para HATEOAS en XML?
- 14. En Erlang, ¿cuál es la mejor manera de actualizar un sistema distribuido?
- 15. .NET: ¿Cuál es la mejor manera de implementar un controlador de excepciones "catch all"
- 16. ¿Cuál es la mejor manera de implementar inicio de sesión para un servicio web?
- 17. ¿Cuál es la manera de implementar la funcionalidad Guardar/Cargar?
- 18. ¿Cuál es la mejor manera de crear un sistema de revisión simple usando MySQL?
- 19. ¿Cuál es la mejor manera de implementar servicios en segundo plano para una aplicación ASP.NET?
- 20. ¿Cuál es la mejor manera de implementar un diccionario seguro para subprocesos?
- 21. ¿Cuál es la mejor manera de implementar el estilo de Gmail "deshacer" en Rails?
- 22. ¿Cuál es la mejor manera de implementar el resaltado de sintaxis del código fuente en Cocoa?
- 23. ¿Cuál es la mejor manera de implementar controles de usuario en ASP.NET MVC?
- 24. ¿Cuál es la mejor manera de implementar BackgroundWorker de C# en Delphi?
- 25. ¿Cuál es la mejor manera de implementar la validación de campo con ASP.NET MVC?
- 26. ¿Cuál es la mejor manera de implementar la detección de colisiones unidimensionales?
- 27. ¿Cuál es la mejor manera de implementar Singleton Design Pattern en C# con restricción de rendimiento?
- 28. ¿Cuál es la mejor manera de implementar ACL en una aplicación de Rails?
- 29. ¿Cuál es la mejor manera de adaptar este sistema de seguridad para tratar la herencia múltiple?
- 30. ¿Cuál es la mejor manera de comparar programas en Windows?
¿Puede tener varias colas? Si es así, sugeriría tener una cola separada para mensajes de alta prioridad que se consulta primero antes de la cola estándar, que solo se usa si la cola de prioridad está vacía. No sé si eso encaja con su escenario, pero esa fue mi primera idea. – CodeFusionMobile
Estoy de acuerdo con CSharpWithJava. Estoy haciendo una gran aplicación de mensajería en este momento, y creo que a partir de sus preguntas, necesita múltiples colas, por lo que puede descargar los mensajes de baja pri a una lista de precios más baja, y leer la alta pri inmediatamente. –