我有一个Bed_Configurations bdConfig = new Bed_Configurations();
bdConfig.type = "Standard";
bdConfig.code = Common.GetStandardBedTypeMappingIDnew(rm.BedType);
bdConfig.count = rm.NumOfBed;
hotelrmtype.bed_configurations.Add(bdConfig);
项目使用Django
和Celery
经纪人。现在我想从RabbitMQ
服务器调用django(celery)任务。
在我的NodeJS
我使用NodeJS
。允许我将任务发送到amqplib
:
RabbitMQ
我的问题是芹菜使用的是什么格式?我应该怎么写Buffer来打电话给芹菜工人?
例如,在我的amqp.connect('amqp://localhost', function(err, conn) {
conn.createChannel(function(err, ch) {
var q = 'celery';
ch.assertQueue(q, {durable: true});
ch.sendToQueue(q, new Buffer('What should I write here?'));
});
});
(django设置)中,我有CELERY_ROUTES
:
blabla.tasks.add
如何调用此CELERY_ROUTES = {
...
'blabla.tasks.add': 'high-priority',
}
函数?
我尝试了许多方法,但是芹菜工人给了我错误:blabla.tasks.add
答案 0 :(得分:1)
我在这里找到了解决方案http://docs.celeryproject.org/en/latest/internals/protocol.html。
示例消息格式为:
{
"id": "4cc7438e-afd4-4f8f-a2f3-f46567e7ca77",
"task": "celery.task.PingTask",
"args": [],
"kwargs": {},
"retries": 0,
"eta": "2009-11-17T12:30:56.527191"
}
所以代码应该是:
amqp.connect('amqp://localhost', function(err, conn) {
conn.createChannel(function(err, ch) {
var q = 'celery';
ch.assertQueue(q, {durable: true});
ch.sendToQueue(q, new Buffer('{"id": "this-is-soo-unique-id", "task": "blabla.tasks.add", "args": [1, 2], "kwargs": {}, "retries": 0}'), {
contentType: 'application/json',
contentEncoding: 'utf-8',
});
});
});