Dead Letter Queue(DLQ)是消息系统中的常见概念,表示消费者达到 max_retries 后投递失败时消息被发送到的位置。Dead Letter Queue 与普通队列一样,可以独立地进行生产和消费。
在 Cloudflare Queues 中,Dead Letter Queue 在消费者配置中定义。当消息达到为消费者配置的重试限制时,会被投递到 DLQ。若未配置 DLQ,达到重试限制的消息将被永久删除。
例如,以下消费者配置会在重试投递(默认 3 次)后将消息发送到名为 "my-other-queue" 的 DLQ:
{
"queues": {
"consumers": [
{
"queue": "my-queue",
"dead_letter_queue": "my-other-queue"
}
]
}
}[[queues.consumers]]
queue = "my-queue"
dead_letter_queue = "my-other-queue"您也可以使用 wrangler 在命令行创建消费者时配置 DLQ:
wrangler queues consumer add $QUEUE_NAME $SCRIPT_NAME --dead-letter-queue=$NAME_OF_OTHER_QUEUE要处理 DLQ 上的消息,需要为该队列配置消费者,与任何其他队列一样。
没有活跃消费者的 DLQ 上的消息将保留四(4)天后从队列中删除。