go语言的任务队列machinery怎么用
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇"go语言的任务队列machinery怎么用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来
千家信息网最后更新 2026年11月04日go语言的任务队列machinery怎么用
这篇"go语言的任务队列machinery怎么用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"go语言的任务队列machinery怎么用"文章吧。
使用概述
步骤1: 创建server,配置参数、注册task。(此处server只是个配置作用, 并不是单独的server进程)
步骤2: 启动worker
步骤3: 发送task
与celery的用法是完全一致的
创建server
func startServer() (*machinery.Server, error) { cnf := &config.Config{ Broker: "amqp://guest:guest@localhost:5672/", DefaultQueue: "machinery_tasks", ResultBackend: "amqp://guest:guest@localhost:5672/", ResultsExpireIn: 3600, //任务有效期 AMQP: &config.AMQPConfig{ Exchange: "machinery_exchange", ExchangeType: "direct", BindingKey: "machinery_task", PrefetchCount: 3, //限定消费能力 }, } // Create server instance broker := amqpbroker.New(cnf) backend := amqpbackend.New(cnf) lock := eagerlock.New() //任务锁 server := machinery.NewServer(cnf, broker, backend, lock) // Register tasks tasks := map[string]interface{}{ "add": exampletasks.Add, "multiply": exampletasks.Multiply, "sum_ints": exampletasks.SumInts, "sum_floats": exampletasks.SumFloats, "concat": exampletasks.Concat, "split": exampletasks.Split, "panic_task": exampletasks.PanicTask, "long_running_task": exampletasks.LongRunningTask, } return server, server.RegisterTasks(tasks)}创建worker
创建worker, 之后就可以启动了
func worker() error { //消费者的标记 consumerTag := "machinery_worker" server, err := startServer() if err != nil { return err } //第二个参数并发数, 0表示不限制 worker := server.NewWorker(consumerTag, 0) //钩子函数 errorhandler := func(err error) {} pretaskhandler := func(signature *tasks.Signature) {} posttaskhandler := func(signature *tasks.Signature) {} worker.SetPostTaskHandler(posttaskhandler) worker.SetErrorHandler(errorhandler) worker.SetPreTaskHandler(pretaskhandler) return worker.Launch()}启动结果
INFO: 2021/05/01 08:28:27 worker.go:58 Launching a worker with the following settings:INFO: 2021/05/01 08:28:27 worker.go:59 - Broker: amqp://192.168.120.101:5672INFO: 2021/05/01 08:28:27 worker.go:61 - DefaultQueue: machinery_tasksINFO: 2021/05/01 08:28:27 worker.go:65 - ResultBackend: amqp://192.168.120.101:5672INFO: 2021/05/01 08:28:27 worker.go:67 - AMQP: machinery_exchangeINFO: 2021/05/01 08:28:27 worker.go:68 - Exchange: machinery_exchangeINFO: 2021/05/01 08:28:27 worker.go:69 - ExchangeType: directINFO: 2021/05/01 08:28:27 worker.go:70 - BindingKey: machinery_taskINFO: 2021/05/01 08:28:27 worker.go:71 - PrefetchCount: 0INFO: 2021/05/01 08:28:27 amqp.go:96 [*] Waiting for messages. To exit press CTRL+C
发送任务
server, _ := startServer()signature := &tasks.Signature{ Name: "add", Args: []tasks.Arg{ { Type: "int64", Value: 1, }, { Type: "int64", Value: 1, }, },}asyncResult, _ := server.SendTask(signature)fmt.Println(asyncResult.Get(time.Millisecond * 5)) //等待间隔,理论上是越小越好//asyncResult.GetWithTimeout(time.Second*120, time.Millisecond * 5) //第一个参数才是timeout以上就是关于"go语言的任务队列machinery怎么用"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
任务
内容
步骤
语言
队列
参数
文章
知识
篇文章
消费
配置
有效
一致
价值
作用
函数
只是
大部分
就是
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
伟宏互联网科技
云信互联网科技有限公司
互联网科技的
华宇互联网科技
互联网科技公司官网
互联网金融科技创新
南京欣网互联网科技
字节跳动和互联网科技
互联网系的金融科技公司
现代互联网科技股
互联网科技人工智能实验室
深圳艾果互联网通讯科技
美国互联网科技实力
互联网金融科技元年
互联网科技年终奖
互联网安防科技感
陕西云淼互联网科技公司
同城互联网络科技
求路客互联网科技电话
杭州融税互联网科技有限公司
A股互联网金融科技公司
互联网金融监管科技
顺网科技2021年互联网排名
宁波青枫互联网科技有限公司
岳阳华臻互联网科技有限公司
互联网新科技动漫ppt素材
互联网科技大赛获奖感言
下一代互联网重大应用科技园
艺电能源互联网科技有限公司招聘
互联网科技博主张洲