我想在这里了解芹菜和AMQP的工作情况 .
我的情景
I install celery in my machine
pip安装芹菜
I make tasks using
from celery import Celery
app = Celery('tasks', backend='amqp', broker='amqp://')
@app.task
def print_hello():
print 'hello there'
据我所知,芹菜将此任务转换为消息并通过AMQP协议发送给经纪人(redis或rabbitmq) . 然后将这些消息排队并传递给工作节点以处理该消息 .
My questions are,
-
假设我在Java环境中创建了任务,如果将消息发送到外部工作节点,是否意味着工作节点服务器必须在其中安装Java才能执行任务?
-
如果外部工作线程节点选择了该消息,则工作节点和代理如何找到对方?在上面的代码中,我只有代理地址来存储任务 .
另外,为什么我们将任务存储在经纪人中?为什么我们不能在芹菜中实施交换算法并将消息直接发送给 Worker ?
SOAP和AMQP有什么区别?
1 回答
工作人员不仅需要Python,还需要您想要在其上运行的任务的所有代码 .
但是你没有专门针对节点,这正是为什么有一个经纪人 . 您将任务放在队列中,然后工作人员将其拾起 .
我不知道为什么你在这个上下文中提到过SOAP . 它与任何事情无关 .