[英]Configure SQS Dead letter Queue to raise a cloud watch alarm on receiving a message
[英]SQS all message goes to dead letter queue
我已经使用 terraform 配置了一个 SQS 队列和一个额外的死信队列。
resource "aws_sqs_queue" "sqs_deadletter" {
name = "worker-dead-letter"
}
resource "aws_sqs_queue" "sqs" {
name = "worker"
/* TODO: If I enable this all messages goes to the dead letter queue
redrive_policy = jsonencode({
deadLetterTargetArn = aws_sqs_queue.sqs_deadletter.arn
maxReceiveCount = 4
})
*/
}
resource "aws_lambda_event_source_mapping" "sqs" {
event_source_arn = aws_sqs_queue.sqs.arn
function_name = aws_lambda_function.worker.arn
enabled = true
batch_size = var.batch_size
}
我使用下面的处理程序来处理我的消息。
@Introspected
class LegacyToModernRequestHandler : MicronautRequestHandler<SQSEvent, Unit>() {
private val logger = KotlinLogging.logger {}
override fun execute(input: SQSEvent) {
input.records.forEach {
handle(it)
}
}
private fun handle(message: SQSMessage) {
val key = message.body
logger.info { "LegacyToModernRequestHandler($key)" }
}
}
但是我所有的消息都发送到 DLQ。 如何指示成功处理,以免发生这种情况?
如果您未使用 AUTO_ACKNOWLEDGEMENT 模式,则必须明确确认消息以便成功处理。 否则它将 go 到 DLQ。 你能展示你是如何配置你的 SQS 队列的吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.