我正在使用机器来处理go中的异步任务,并且我想使用不同的队列来处理不同的任务,基本上,对于我想将任务发送到的add操作 add_queue
,对于乘法运算,我希望它们处于 multiply_queue
如下所示:
addTask := mtasks.Signature{
Name: "add",
RoutingKey: "machinery_tasks",
Args: []mtasks.Arg{
{
Type: "int64",
Value: 11,
},
{
Type: "int64",
Value: 12,
},
},
}
client.Machinery.SendTask(&addTask)
multiplyTask := mtasks.Signature{
Name: "multiply",
RoutingKey: "multiply_queue",
Args: []mtasks.Arg{
{
Type: "int64",
Value: 8,
},
{
Type: "int64",
Value: 4,
},
},
}
client.Machinery.SendTask(&multiplyTask)
我的client.machine被定义为一个全局变量,默认队列为 machinery tasks
,然后我意识到 add
也不是 multiply
得到处理,因为worker没有初始化为 add_queue
或者 multiply_queue
,例如:
package client
var Machinery *machinery.Server
var cnf = &config.Config{
Broker: "redis://localhost:6379",
DefaultQueue: "machinery_tasks",
ResultBackend: "redis://localhost:6379",
}
server, _ := machinery.NewServer(cnf)
tasks := gin.H{
"add": tasks.Add,
"multiply": tasks.Multiply,
}
server.RegisterTasks(tasks)
Machinery = server
我想知道什么是处理这种情况的最佳方法,而不必为不同的队列创建不同的服务器来启动worker。
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!