728x90
Lambda 에서 실패한 이벤트들은 SQS DLQ 에 쌓는 구조다.
배열로 들어오는 대량의 이벤트들이 DB에 쌓다가 실패 했을 때 람다로 들어온 이벤트를 그대로 DLQ에 쌓고 싶었다. 해당 이벤트는 배열로 묶여져 있다. catch로 받아서 해당 이벤트들을 DLQ로 보냈는데, AWS SQS 대시보드 상에서는, 배열로 묶인 json 객체들을 하나하나 풀어서 각각 이벤트로 취급되는 것으로 보였다. ID도 각각 다르고 messageBody 에 배열 객체를 넣어 보냈는데, 배열에 각 요소들의 구분값들이 사진상의 ID 값들과 1:1 매핑이었다. (나의 의도는 하나의 묶음으로 보냈으니 DLQ에 이벤트는 묶음으로 쌓여야 한다고 생각 했다.)
그래서 온갖 방법을 써 봤지만 여전히 그대로였다. 그래서 일단은 DLQ에서 리드라이브를 해보기로 했다. 실제로 받아보니 각각의 이벤트로 들어오는 것 같았다. 다시 배열로 들어오기는 하지만 이벤트 각각이 큐에 쌓여서 한번에 처리 되어서였다.

내가 그리고 있는 그림은 이게 아니었다. 함수 한번에 들어 온 이벤트의 갯수가 몇개이든 만약 그 함수에서 로직이 실패하면 DLQ에 하나의 이벤트가 발생하게 하고싶다. 예측으로는 SQS 성격상 body에 배열로 못들어가는 것 같다. 더 알아봐야 할 것 같다.
'난중(개발)일기 > 삽질기록' 카테고리의 다른 글
알림톡 프로세스 개선 - dead letters 처리할 때 DLQ를 사용 하지 않고 NoSQL 사용 (0) | 2024.08.01 |
---|---|
알림톡 프로세스 개선 SQS - Lambda (feat. DLQ - Dead Letter Queue) (0) | 2024.07.19 |
알림톡 프로세스를 개선 하며, AWS Lambda 동시성 제어에 대한 고민 (0) | 2024.07.11 |
java 8 + hibernate 5.0.12 에서 두 개의 LocalDateTime 파라메터 between 조회하며 (0) | 2024.07.08 |
알림톡 기능 퍼포먼스 개선 (0) | 2024.07.07 |