机械工人不在默认队列以外的其他队列中处理任务

eit6fx6z  于 2021-06-08  发布在  Redis
关注(0)|答案(0)|浏览(238)

我正在使用机器来处理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。
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题