From afcef61972bd42561831ce608f3df71cc2426de9 Mon Sep 17 00:00:00 2001 From: ruinivist Date: Tue, 14 Apr 2026 21:57:44 +0000 Subject: [PATCH] set one message as bacis nack for dlq --- TASK.md | 8 ++++---- worker.py | 8 ++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/TASK.md b/TASK.md index 5efe065..94492f1 100644 --- a/TASK.md +++ b/TASK.md @@ -148,10 +148,10 @@ Expected behavior: ## Step 7: Failure Drill (10 min) -- [ ] Start worker and producer. -- [ ] Kill worker while processing a message. -- [ ] Restart worker. -- [ ] Verify unacked message is redelivered and processed. +- [x] Start worker and producer. +- [x] Kill worker while processing a message. +- [x] Restart worker. +- [x] Verify unacked message is redelivered and processed. ## Step 8: DLQ Drill (10 min) diff --git a/worker.py b/worker.py index eb09e87..8005d09 100644 --- a/worker.py +++ b/worker.py @@ -46,12 +46,20 @@ def on_message( _ = properties order: OrderMessage = json.loads(body) order_id = order["order_id"] + retry_count = order.get("retry_count", 0) should_fail = order.get("should_fail", False) print(f"[worker] got order={order_id} retry={retry_count}") time.sleep(1) + if order_id == 1003: + print(f"sending 1003 to dlq") + # basic nack by defaul will reque and not be a dead letter + # you need to have requeue=False + channel.basic_nack(delivery_tag=method.delivery_tag, requeue=False) + return + if should_fail and retry_count < 2: order["retry_count"] = retry_count + 1 publish_status("order.created", order) # this key, this obj