go语言的任务队列machinery怎么用
发表于:2024-10-13 作者:千家信息网编辑
千家信息网最后更新 2024年10月13日,这篇"go语言的任务队列machinery怎么用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来
千家信息网最后更新 2024年10月13日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安全错误
数据库的锁怎样保障安全
法讯网络技术公司
兆行网络技术有限公司
重庆嵌入式软件开发培训
长沙oa软件开发报价
四川成都网络安全产业基金
云端服务器无法连接wifi
网络安全教育学习心得
连云港ios软件开发多少钱
网络安全手抄报底板
图数据库可以实现关系数据库吗
数据库入侵知识
网络安全靠人蒙文报
儿童网络安全行为口诀十条
网络技术补考好过吗
无线局域网服务器
计算机网络安全维护的重要性
ios 查询数据库
社保显示申报处理服务器异常
杭州app软件开发价钱是多少
数据库更改密码复杂性要求
基础软件开发有哪些
ui设计应用的软件开发
802.11无线网络技术
计算机服务器管理系统
数据库的冒号等号是什么
物资网络安全宣传
西安七月互联网科技有限公司
国网公司网络安全宣传
计算机网络安全维护的重要性
网络安全防诈骗主题班会记录内容