add notifier

This commit is contained in:
2026-04-14 21:54:01 +00:00
parent 236a93d7b9
commit 0eeefa377d
3 changed files with 66 additions and 22 deletions
+44
View File
@@ -0,0 +1,44 @@
from typing import TypedDict
import json
import pika
from pika.adapters.blocking_connection import BlockingChannel
from pika.spec import Basic
conn = pika.BlockingConnection(pika.ConnectionParameters("localhost"))
ch = conn.channel()
ch.basic_qos(prefetch_count=1)
# hover over on_messae_callback
# the docs specify signature
class OrderMessage(TypedDict):
order_id: int
user_id: str
amount: float
should_fail: bool
retry_count: int
def on_order_processed(channel: BlockingChannel, method: Basic.Deliver, properties, body):
order: OrderMessage = json.loads(body)
print(f"processed order: {order["order_id"]}")
channel.basic_ack(delivery_tag=method.delivery_tag)
def on_order_failed(channel: BlockingChannel, method: Basic.Deliver, properties, body):
order: OrderMessage = json.loads(body)
print(f"failed after retries: {order["order_id"]}")
channel.basic_ack(delivery_tag=method.delivery_tag)
ch.basic_consume(queue="orders.processed.q",
on_message_callback=on_order_processed, auto_ack=False)
ch.basic_consume(queue="orders.failed.q",
on_message_callback=on_order_failed, auto_ack=False)
# easy to forget
print("[notifier] waiting on messages")
ch.start_consuming()