向芹菜中的特定消费者发送消息(通过路由键)
Send message to specific consumer in celery (via routing key)
Celery
是否支持专门向特定的 consumer/client 发送消息,例如通过路由键?
默认情况下 RabbitMQ
机器可以通过使用直接队列来定位,但我正在尝试使用 Celery 实现相同的行为
@app.task
def add(x, y):
return x + y
# something like this
add.delay(1, 2, "machine-xyz")
您可以 运行 您的 worker-xyz
作为 -Q worker-abc-queue
使其侦听特定队列,然后在调用任务路由时指定此队列名称
add.apply_async((1, 2), {}, queue='worker-abc-queue')
另一种方法是在 Celery app.task
装饰器中设置 queue
参数,如果在您的情况下不需要以编程方式路由每条消息,这将很方便。
@app.task(queue='YOUR_QUEUE_NAME')
def add(x, y):
return x + y
# so you don't need to specify queue or routing key every time when your code invokes it.
add.delay(1, 2)
Celery
是否支持专门向特定的 consumer/client 发送消息,例如通过路由键?
默认情况下 RabbitMQ
机器可以通过使用直接队列来定位,但我正在尝试使用 Celery 实现相同的行为
@app.task
def add(x, y):
return x + y
# something like this
add.delay(1, 2, "machine-xyz")
您可以 运行 您的 worker-xyz
作为 -Q worker-abc-queue
使其侦听特定队列,然后在调用任务路由时指定此队列名称
add.apply_async((1, 2), {}, queue='worker-abc-queue')
另一种方法是在 Celery app.task
装饰器中设置 queue
参数,如果在您的情况下不需要以编程方式路由每条消息,这将很方便。
@app.task(queue='YOUR_QUEUE_NAME')
def add(x, y):
return x + y
# so you don't need to specify queue or routing key every time when your code invokes it.
add.delay(1, 2)