在web应用业务中,经常会遇到类似异步处理,秒杀,排队等逻辑,这时利用消息队列来完成这样的功能是一个明智的选择;

在业务规模较小的应用中我们可以使用redis中的list数据类型,在大规模业务中我们可以引入rocketmq等,尤其在业务重构时需要将原有的redis消息队列实现改成rocketmq,为了保证既有业务不受影响又不引入新的BUG,是一件非常苦恼的事情;

今天就介绍一个包,可以方便的解决上述问题,他是 Orange框架 中的一个子包,对常用的mq操作进行了封装,即使没有通过该框架开发也能直接使用该子包;通过 go moduls 特性进行按需加载;

让我们更新关注业务本身,各种客户端/sdk接入交给既有封装即可;

准备工作:

搭建好rocketmq服务,启动 mqnamesrv和至少1个mqbroker节点;

在 GOPATH 目录下创建一个demo目录并在目录中创建一个main.go,写入如下demo代码:

package main

import (

"gitee.com/zhucheer/orange/queue"

"time"

"fmt"

)

func main(){

// 注册生产者 填入broker节点,group名称,重试次数信息

mqProducerClient := queue.RegisterRocketProducerMust([]string{"192.168.137.100:9876"}, "