将队列/经纪人内容映射到任务

问题描述

是否可以将代理/队列中消息的内容映射到特定任务?我正在将SQS和celery用于工作者架构,并且我的工作者具有python任务/功能。我要做的就是根据消息的内容调用任务。例如,如果我的工人定义了以下任务:

@celery.task
def add(message):
    pass

@celery.task
def subtract(message):
    pass

然后,如果SQS队列中的消息具有{“ operation”:“ add”},则应调用“ add”任务;如果消息具有{“ operation”:“ subtract”},则应具有“ subtract task”“ / p>

解决方法

Celery不会使用任意SQS消息。您必须使用正确配置的Celery实例和apply_async(),delay()或send_task()方法将有效 Celery消息发送到SQS队列。