如何在PHP中的celery-rabbitmq队列上发布任务?
我有以下版本的芹菜和rabbitmq安装 –
我可以将任务发布到PHP的默认队列 – //client.php <?php require 'celery-php/celery.php'; $c = new Celery('localhost','guest','/'); $result = $c->PostTask('tasks.add',array(2,2)); 我的工作模块在python – # tasks.py from celery import Celery celery = Celery('tasks',broker='amqp://guest:guest@localhost:5672//') @celery.task(queue='demo',name='add') def add(x,y): return x + y 我跑这样的芹菜工人和客户端 – # terminal window 1 $celery -A tasks worker --loglevel=info # terminal window 2 $php -f client.php 这个工作.我在终端窗口1中看到下面的输出: Received task: tasks.add[php_52b1759141a8b3.43107845] Task tasks.add[php_52b1759141a8b3.43107845] succeeded in 0.000701383920386s: 4 但是我想要有不同的队列.对于演示,假设我只想要一个名为demo的队列.所以我跑这样的芹菜工人 – $celery -A tasks worker --loglevel=info -Q demo 但它不工作任务没有执行.我想这可能是因为PHP代码将任务发布在默认队列中:芹菜(显然不在演示队列中). 如何在PHP中的特定队列上发布我的任务?请帮忙.
默认情况下,Celery的PHP客户端将队列名称设置为“芹菜”.
为了将队列更改为发布,必须在实例化与Celery的连接时指定队列名称. $exchange = 'demo'; $binding = 'demo'; $c = new Celery('localhost','/',$exchange,$binding); 注意:使用-Q选项,exchange和routing_key值与queue_name相同. 请尝试并分享结果. 关于交换和约束: 与电话服务类似,Exchange就像“电话操作符”,其唯一的工作就是通过routing_key来“直接拨打你”. 然后绑定是“您的电话号码”,其作为路由_key到您的电话. 注意:交换根据绑定(routing_key)将传入消息重定向到队列的过程是DIRECT交换类型. 你也可以参考这个Celery page (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |