2017-02-19 1 views
0

사용자 SQS 대기열에 메시지가 있으면 알람이 트리거되고 SNS 알림이 람다 보내기 전자 메일 프로세스를 시작합니다. 람다 함수가 예외를 throw하고 나머지 일괄 처리를 다시 호출하지 않으면 어떻게 다시 시작합니까? SNS는 알림 상태가 변경 될 때만 알림을 보내지 만이 경우 상태는 그대로 유지됩니다.MoonMail : 람다 보내기 함수 다시 호출

+0

어떤 예외가 발생합니까? 가장 일반적인 예외가 처리되지만 예기치 않은 예외가 발생하면 람다가 무한 루프로 끝나는 것을 막기 위해 모든 프로세스가 중지됩니다 – davids

+0

@davids, 던져진 예외는 완전히 내 잘못입니다. 나는 그것을 연구하고 더 잘 배우기 위해 레포를 복제하고 배포하고 Moonmail을 조정했다. 하지만 제 질문은 아직 남아 있습니다. 예외가 가장자리 케이스에서만 발생하고 람다를 멈추는 것이 원하는 동작이 아니라면 어떻게 될까요? Lambda 자체가 제 제어에서 벗어난 것으로 실패하고 다시 트리거하려고하면 어떻게됩니까? 제 질문은 "문 메일에 버그가 있습니다"가 아니라 아키텍처 회복력에 관한 "만약에"에 대한 것이 었습니다. – Julian

+0

그런 경우 [Dead Letter Queue] (http://docs.aws.amazon.com/lambda/latest/dg/dlq.html)를 설정하여 프로그래밍 방식으로 오류의 원인을 확인하고 해당 오류를 다시 호출 할 수 있습니다. 원한다면 람다. 어쨋든 함수는 큐가 비워 질 때까지 재귀 적으로 실행되기 때문에 큐가 플러시되는 것을 막고 아무것도 작동하지 않으면 아무런 기능이 실행되지 않고 – davids

답변

0

Dead Letter Queue을 설정하여 프로그래밍 방식으로 오류의 원인을 확인하고 원하는 경우 람다를 다시 호출 할 수 있습니다. 어쨌든, 함수는 큐가 비워 질 때까지 재귀 적으로 실행되므로 큐가 플러시되는 것을 막고 아무 함수도 계속 실행되지 않는 경우