AWS Lambda - 死信队列最佳实践的死信队列
AWS Lambda - dead letter queue for dead letter queue best practices
我有一个 lambda 函数,我想为其创建一个 SQS 死信队列。我首先在 terraform 中创建 SQS:
resource "aws_sqs_queue" "my_lambda_dlq" {
name = "my_lambda_dlq"
delay_seconds = 90
max_message_size = 2048
message_retention_seconds = 86400
receive_wait_time_seconds = 10
redrive_policy = jsonencode({
deadLetterTargetArn = aws_sqs_queue.terraform_queue_deadletter.arn
maxReceiveCount = 4
})
tags = local.default_tags
}
这是来自 terraform 的示例。但是,我卡在了 redrive_policy.
- 我没理解错吗,这给SQS队列设置了一个死信队列?
- 如果我设置 redrive_policy,这意味着我在 DLQ 上设置了 DLQ。我觉得可以在 DLQ 上设置 DLQ 等等。
我找不到与此相关的任何最佳实践。有人有这方面的经验吗?
我在这里的主要目标是不丢失任何消息。
谢谢,
夜光
通过指定 redrive_policy
,您可以配置将无法处理/失败的消息发送到的位置。您将这些消息发送到的队列称为 dlq / dead-letter-queue,但它仍然是一个普通队列。
是的,一个 DLQ 可以再次拥有另一个 DLQ,因为每个 DLQ 本身仍然只是一个队列。我想不出任何情况下你会想要它,但没有什么能阻止你这样做。
“如果我设置 redrive_policy,这意味着我在 DLQ 上设置 DLQ” - 从技术上讲,dlq 不存在,AWS 只知道队列。通过将一个队列配置为另一个的 dlq,您不会改变两者都是队列的事实。如果任何队列被配置为任何其他队列的重新驱动目标,那么它就是一个 DLQ。
我有一个 lambda 函数,我想为其创建一个 SQS 死信队列。我首先在 terraform 中创建 SQS:
resource "aws_sqs_queue" "my_lambda_dlq" {
name = "my_lambda_dlq"
delay_seconds = 90
max_message_size = 2048
message_retention_seconds = 86400
receive_wait_time_seconds = 10
redrive_policy = jsonencode({
deadLetterTargetArn = aws_sqs_queue.terraform_queue_deadletter.arn
maxReceiveCount = 4
})
tags = local.default_tags
}
这是来自 terraform 的示例。但是,我卡在了 redrive_policy.
- 我没理解错吗,这给SQS队列设置了一个死信队列?
- 如果我设置 redrive_policy,这意味着我在 DLQ 上设置了 DLQ。我觉得可以在 DLQ 上设置 DLQ 等等。
我找不到与此相关的任何最佳实践。有人有这方面的经验吗?
我在这里的主要目标是不丢失任何消息。 谢谢, 夜光
通过指定 redrive_policy
,您可以配置将无法处理/失败的消息发送到的位置。您将这些消息发送到的队列称为 dlq / dead-letter-queue,但它仍然是一个普通队列。
是的,一个 DLQ 可以再次拥有另一个 DLQ,因为每个 DLQ 本身仍然只是一个队列。我想不出任何情况下你会想要它,但没有什么能阻止你这样做。
“如果我设置 redrive_policy,这意味着我在 DLQ 上设置 DLQ” - 从技术上讲,dlq 不存在,AWS 只知道队列。通过将一个队列配置为另一个的 dlq,您不会改变两者都是队列的事实。如果任何队列被配置为任何其他队列的重新驱动目标,那么它就是一个 DLQ。