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.

¿Existe alguna forma de consultar una cola específica que es parte de una cola más grande en SQS?

Tengo un proceso que lee un mensaje de SQS y lo procesa. Cada mensaje tiene una group_message_key, y el procesamiento de cada mensaje es relativamente rápido, pero si leo un mensaje con una group_message_key diferente, hay un tiempo de procesamiento adicional. Por lo tanto, intento agrupar los mensajes para evitar estas conmutaciones de contexto.

Me gustaría tener la opción de leer inicialmente desde una cola general, donde se almacenan todos los mensajes, y solo después de haber leído el primer mensaje, consultar la cola de mensajes para entregar solo los mensajes con la group_message_key específica.

Actualmente estoy utilizando Amazon SQS, pero no me importa cambiar a otro broker de mensajes que pueda proporcionar la funcionalidad que me falta (por ejemplo, Rabbit, Kafka).

Leo de la misma cola en paralelo desde muchos procesos diferentes, por lo que la solución aún tendría que admitir esto. Amazon SQS tiene una cola FIFO que, aunque no permite solicitar mensajes con una group_message_key específica, intenta agrupar estos mensajes juntos, el problema es que no permite que muchos trabajadores procesen el mismo id de grupo de mensajes.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una posible solución para este caso de uso podría ser utilizar Amazon SNS (Servicio de Notificación Simple) en lugar de SQS. Con SNS, podrías crear un tema para cada group_message_key y publicar mensajes en el tema correspondiente. Luego, podrías suscribir tu aplicación de procesamiento a cada tema y recibir solo los mensajes para esa group_message_key específica. De esta manera, podrías lograr la agrupación de mensajes y evitar el tiempo de procesamiento adicional causado por los cambios de contexto.

    Otra opción podría ser utilizar RabbitMQ o Kafka, ya que proporcionan características más avanzadas para el enrutamiento y filtrado de mensajes. Con RabbitMQ, podrías utilizar colas de mensajes e intercambios para enrutar mensajes basados en la group_message_key. De manera similar, con Kafka podrías utilizar temas y grupos de consumidores para agrupar mensajes y distribuirlos entre diferentes trabajadores.

    Independientemente del proveedor de mensajes que elijas, debes asegurarte de que tu aplicación de procesamiento pueda manejar lecturas paralelas desde múltiples fuentes y que pueda manejar fallas y escalado a medida que aumente tu carga de trabajo. Además, debes considerar las implicaciones de costo y rendimiento de cada proveedor de mensajes, así como su compatibilidad con otros servicios y herramientas de AWS.

Comments are closed.