消息队列异步操作业务代码示例
时间: 2025-01-07 08:33:46 浏览: 6
### 使用消息队列实现异步操作的业务场景
在电子商务平台中,当用户提交订单时,系统会触发一系列复杂的后台处理流程。为了提高用户体验并解耦各个服务模块之间的依赖关系,在接收到用户的下单请求之后并不会立即执行所有的后续逻辑,而是通过消息队列来完成这些任务。
#### Python 中基于 RabbitMQ 的简单示例
下面是一个利用 Pika 库连接到 RabbitMQ 并发送/接收消息的例子:
```python
import pika
def send_order_confirmation(order_id):
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
queue_name = 'order_queue'
# 声明队列
channel.queue_declare(queue=queue_name)
message = f'Order {order_id} has been placed.'
# 发送消息至指定队列
channel.basic_publish(exchange='',
routing_key=queue_name,
body=message)
print(f"[x] Sent '{message}'")
connection.close()
def process_orders():
def callback(ch, method, properties, body):
order_info = body.decode()
print(f" [x] Received {order_info}")
# 处理订单确认邮件或其他业务逻辑
ch.basic_ack(delivery_tag=method.delivery_tag)
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
queue_name = 'order_queue'
channel.queue_declare(queue=queue_name)
channel.basic_consume(queue=queue_name,
on_message_callback=callback)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
```
在这个例子中,`send_order_confirmation()` 函数负责向 `order_queue` 队列发送新创建订单的信息;而 `process_orders()` 则持续监听该队列中的消息,并调用回调函数来进行相应的业务处理[^1]。
阅读全文