使用 Celery 实现 Topic 模式的消息分发

使用 Celery 实现 Topic 模式的消息分发

摘要

Topic 模式是分布式消息队列的一个重要的应用场景,尤其是多个后台项目依次触发相应事件的时候,Topic 模式拥有无与伦比的优势。但通常情况下,我们直接使用 amqp 来实现这样的模式。经过测试,Celery 也可以完成相应的工作,但对项目结构有一定的要求。这篇文章提供了一套详细的实现方案。

生产者

生产者在配置的时候有以下几个重点:

  • 一个使用topic模式的交换机
  • 一个空队列,用来让 Celery 自动创建交换机。如果没有这个空队列,Celery 不会自动创建,我们就必须手动创建或者确保消费者在生产者之前启动。
  • 一个固定的槽函数,所有事件发送到该函数下,Worker 固定从该槽函数接收事件,否则 Celery 无法处理。

示例项目结构:

topic_events
  __init__.py
  config.py
  task.py
# __init__.py
from celery import Celery

celery = Celery()
# 从 config.py 加载配置
celery.config_from_object('topic_events.config')
# config.py
from kombu import Exchange, Queue

# 交换机,类型设置为topic
exchange_topic_events = Exchange(name='topic_events', type='topic')

BROKER_URL = 'amqp://{username}:{password}@{host}:
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值