Python分布式任务队列Celery如何以阿里RocketMQ作为Broker

RT,最近想拿阿里的这个 Rocket MQ 来当 Celery 的 broker, 但是貌似没找到啥最佳实践。想问下有哪位大佬尝试过吗~


Python分布式任务队列Celery如何以阿里RocketMQ作为Broker
3 回复

要在Celery中使用阿里云RocketMQ作为Broker,需要安装并配置celery-rocketmq库。这个库为Celery提供了RocketMQ支持。

首先安装依赖:

pip install celery-rocketmq

然后配置Celery应用。下面是一个完整的示例:

# tasks.py
from celery import Celery

# 创建Celery应用,使用rocketmq作为broker
app = Celery(
    'myapp',
    broker='rocketmq://your_access_key:your_secret_key@onsaddr-internet.aliyun.com:80/your_instance_id?consumer_group=your_consumer_group&producer_group=your_producer_group',
    backend='rpc://'  # 可选的结果后端
)

# 定义任务
@app.task
def add(x, y):
    return x + y

@app.task  
def multiply(x, y):
    return x * y

启动worker:

celery -A tasks worker --loglevel=info

调用任务:

# client.py
from tasks import add, multiply

# 异步执行任务
result = add.delay(4, 6)
print(f"Task ID: {result.id}")

# 获取结果(如果需要)
print(f"Result: {result.get(timeout=10)}")

配置说明:

  • your_access_key/your_secret_key: 阿里云AccessKey
  • your_instance_id: RocketMQ实例ID
  • your_consumer_group/your_producer_group: 消费组和生产者组名称
  • onsaddr-internet.aliyun.com:80: 公网接入点

关键点:确保RocketMQ实例已创建,且网络可访问。

总结:用celery-rocketmq库桥接Celery和RocketMQ。


咨询了阿里的人=-=现在还不行

rocketmq 的非 java 支持,几乎没有
如果对消息队列有需要,可以用 rabbitmq 或者 kafka

回到顶部