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.

Omitir mensajes de SQS mientras se consume una cola.

Tengo un productor de mensajes que envía mensajes como {“user_id”: 1, “message”: “Ciao”} a una cola SQS.

Tengo tres instancias de una API de WebSockets, sus nombres son A, B y C.

Digamos que cinco usuarios se conectan a esa API, y sus IDs son 1, 2, 3, 4 y 5.

Cada usuario se conecta a la API, y mi balanceador (sticky, por supuesto) hace que los clientes se conecten a la API de esta manera:

A: 1, 3
B: 5
C: 2, 4

Ahora bien, la API de WebSockets es el consumidor de la cola SQS mencionada anteriormente.

Cuando encolo un mensaje para el usuario 1, cualquier consumidor podría sacarlo primero, digamos que C lo hace.

La instancia C no puede hacer nada con los mensajes para el user_id 1. A es quien tiene la conexión real con ese usuario.

En mi mente, esto funcionaría así: cualquier mensaje será recibido por las tres instancias de API.

C lo leerá y lo dejará en la cola.
B lo leerá y lo dejará en la cola.
A lo leerá, lo procesará y lo eliminará de la cola.

Mi pregunta es:

¿Es factible implementar el flujo de trabajo anterior con SQS?

¿Es posible leer un mensaje de la cola y dejarlo allí? ¿O debo sacarlo de la cola y volverlo a poner en la cola si no puede ser procesado por el consumidor actual?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible implementar el flujo de trabajo anterior con SQS. SQS te permite leer un mensaje de la cola sin borrarlo. Esto se conoce como una operación de “vistazo”. Entonces, puedes decidir si deseas o no eliminar el mensaje. Si decides no eliminar el mensaje, permanecerá en la cola para que otros consumidores lo procesen.

Comments are closed.