En mi aplicación, estamos usando un SQS para poner en cola los mensajes para que los procese otro módulo. SQS no envía una notificación de que ha llegado un mensaje y no quiero que mi aplicación vaya a verificarlo cada "X veces". Así que estoy tratando de usar un disparador lambda para hacer una solicitud http a mi módulo y hacer que agrupe los mensajes de SQS cuando llegue un mensaje.
El problema es que SQS elimina los mensajes enviados si no hay ningún error en la función lambda (que yo sepa). Forzar un error solo para mantener los mensajes en el grupo no puede ser correcto. Así que necesito una forma de mantener los mensajes en el SQS después de que se active la lambda.
Tal vez debería mover el código que procesa el mensaje a la función lambda, pero estoy buscando formas de mantenerlo allí.
¿Alguien podría dar alguna orientación?
Gracias por adelantado
SQS está diseñado para ser un único productor a consumidor para sus colas, de modo que la funcionalidad prevista esté sucediendo.
Sin embargo, hay una solución disponible para este escenario exacto, pero requerirá que actualice su arquitectura.
La solución es utilizar una arquitectura fanout .
En su lugar, publicaría en un tema de SNS, que tiene su cola de SQS suscrita. Luego, cree colas SQS adicionales para canales paralelos (1 por cada Lambda única).
Agregue cada función Lambda como consumidor de su propia cola SQS, cada una con su propio procesamiento.