当前位置: 首页 > news >正文

自学网课程设置seo教程seo优化

自学网课程设置,seo教程seo优化,php怎么做多个网站,组织建设情况怎么写文章目录 一.Asynq介绍二.所需工具三.代码示例四.Reference 一.Asynq介绍 Asynq 是一个 Go 库,一个高效的分布式任务队列。 Asynq 工作原理: 客户端(生产者)将任务放入队列服务器(消费者)从队列中拉出任…

文章目录

  • 一.Asynq介绍
  • 二.所需工具
  • 三.代码示例
  • 四.Reference

一.Asynq介绍

Asynq 是一个 Go 库,一个高效的分布式任务队列。

Asynq 工作原理:

  • 客户端(生产者)将任务放入队列
  • 服务器(消费者)从队列中拉出任务并为每个任务启动一个工作 goroutine
  • 多个工作人员同时处理任务

git库:https://github.com/hibiken/asynq

二.所需工具

Asynq 使用 Redis 作为消息代理。client 和 server 都需要连接到 Redis 进行写入和读取。

PS:请确保所使用redis >= 5.0

三.代码示例

以记录操作的中间件函数向数据库写数据的情景为例。

  1. 生产者(客户端)函数调用入口:

其中 map 为需向数据库写入的内容

client.Call("audit:opera", map[string]any{"uri":        uri,"method":     method,"params":     string(paramsByte),"headers":    string(headerByte),"code":       codeInt,"model":      model,"action":     action,"user_id":    userId,"company_id": companyId,"user_name":  userName,"company":    companyName,
})
  1. 生产者函数
func Call(t string, payload map[string]any) error {// redis连接client := asynq.NewClient(asynq.RedisClientOpt{Addr:     "127.0.0.1:6379",Password: "",DB:       1,})defer client.Close()switch t {case "audit:opera":// 初始化新任务task, err := server.NewOperateSendTask(payload)if err != nil {return err}// 任务入队_, err = client.Enqueue(task, asynq.Queue("audit"))if err != nil {log.Err(err).Msg(fmt.Sprintf("task: %v\n", task))return err}}return nil
}
func NewOperateSendTask(data map[string]any) (*asynq.Task, error) {payload, err := json.Marshal(data)if err != nil {return nil, err}return asynq.NewTask(consts.TypeAuditOpera, payload), nil
}
  1. 消费者函数
func HandlerAuditOperateTask(ctx context.Context, t *asynq.Task) error {var record ent.OperateRecord// 队列中取任务err := json.Unmarshal(t.Payload(), &record)if err != nil {log.Err(err).Msg("task.json.Unmarshal")return err}// 真正的数据库操作err = dao.OperateRecord.CreateOperateRecord(&record)if err != nil {log.Err(err).Msg("task.dao.OperateRecord.CreateOperateRecord")return err}return nil
}
  1. asynq初始化(消费者启动入口,项目初始化时自动启动)
func InitAsynq(ip string, port int, passwd string) {addr := fmt.Sprintf("%s:%d", ip, port)srv := asynq.NewServer(asynq.RedisClientOpt{Addr:     "127.0.0.1:6379",Password: "",DB:       1,},// 异步队列asynq.Config{Queues: map[string]int{"audit": 3,},},)mux := asynq.NewServeMux()// 启动消费者mux.HandleFunc("audit:opera", server.HandlerAuditOperateTask)go srv.Run(mux)}

四.Reference

Go异步任务解决方案之Asynq库详解:
https://www.jb51.net/article/275392.htm

http://www.dt0577.cn/news/53322.html

相关文章:

  • 手机网站建设哪家好宁波网络推广软件
  • 安阳网站推广优化四川成都最新消息
  • 试用网站 建站提高百度快速排名
  • 网站备案号密码找回手机百度搜索引擎入口
  • 东营seo网站建设费用怎么搞自己的网站
  • 什么亲子网站可以做一下广告词qq群推广引流免费网站
  • 电子商务网站建设 实验分析seo怎么做优化排名
  • 以前的网站忘了怎么办啊四川企业seo推广
  • 怎么做谷歌收录的网站优化设计四年级上册语文答案
  • 手机便宜的网站建设企业营销推广策划
  • 广西网站建设代理加盟广告视频
  • 南山的网站建设营销型网站建设方案
  • 深圳有限公司seo产品推广
  • 已经有网站域名如何做网页优质外链平台
  • 西安分类信息seo公司seo在线优化排名
  • 武汉网站设计师培训学校百度怎么推广自己的视频
  • 网站后台开发做什么自媒体平台收益排行榜
  • 自定义导航网站 源码今天发生的重大新闻5条
  • 怎么让网站自适应百度灰色关键词排名推广
  • 做服装外单的网站有哪些网站源码交易平台
  • 做网站想要中立视频剪辑培训
  • wordpress 加密苏州排名搜索优化
  • 网站开发还是做数据库开发免费的h5制作网站模板
  • 哪些网站动效做的不错佛山网站设计实力乐云seo
  • 怎么自己做blog网站怎么做网上销售
  • 国外网站备案查询无忧seo
  • 乌兰察布网站制作长春百度网站快速排名
  • 太原市建设拆迁中心网站提升关键词排名有哪些方法
  • 竞价页面网站做优化排名第一的玉米品种
  • 做网站和app有什么区别软文推广多少钱