sallyface

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2026.6.11

消息队列RabbitMQ入门

今日学习

今天学习了消息队列RabbitMQ的基本概念和使用场景。深入理解了AMQP协议、Exchange交换机类型(Direct、Fanout、Topic、Headers)、Queue队列、Binding绑定等核心概念。学习了在什么场景下需要使用消息队列(异步处理、解耦、流量削峰),以及如何保证消息的可靠传递(消息确认机制、持久化)。

代码实践

为应急演练系统引入了RabbitMQ用于异步处理:将AI问答请求放入消息队列,后台worker异步处理并生成结果,避免了同步调用导致的超时问题。实现了邮件通知的异步发送,用户提交反馈后立即返回,后台发送邮件通知管理员。

# 生产者:发送消息
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='drill_notifications', exchange_type='topic')
channel.basic_publish(
    exchange='drill_notifications',
    routing_key='feedback.new',
    body=feedback_data
)

# 消费者:异步处理
def callback(ch, method, properties, body):
    feedback = json.loads(body)
    send_notification_email(feedback)
    ch.basic_ack(delivery_tag=method.delivery_tag)

channel.basic_qos(prefetch_count=1)
channel.basic_consume(queue='email_notifications', on_message_callback=callback)

今日代码量

  • RabbitMQ生产者:80行
  • RabbitMQ消费者:100行
  • Docker Compose集成:30行
  • 今日总代码:210行

学习总结

消息队列是处理高并发和异步任务的神器,合理使用可以大大提升系统的响应速度和吞吐量。

posted on 2026-06-19 22:24  Ambersen  阅读(6)  评论(0)    收藏  举报