使用 GraceMQ 记录消息模拟代码
package main
import (
"fmt"
"runtime"
"strconv"
"sync"
"time"
"github.com/cnlesscode/graceMessageQueueClient/client"
)
// 全局变量
var addr string = "192.168.1.100:8881"
var graceMQConnetionPool *client.GraceMQConnectionPool
var wg sync.WaitGroup
func main() {
// 观察协程
go func() {
for {
fmt.Printf("协程数 : %v\n", runtime.NumGoroutine())
time.Sleep(time.Second * 3)
}
}()
// 初始化连接池
graceMQConnetionPool = client.Init(addr, 2000)
for i := 1; i <= 50000; i++ {
wg.Add(1)
go func(step int) {
defer wg.Done()
// 生产消息
res := graceMQConnetionPool.ProductMessage("topic1", "Messsge ["+strconv.Itoa(step)+"]")
if res.Errcode != 0 {
fmt.Printf("res.Data: %v\n", res.Data)
}
}(i)
}
wg.Wait()
println("--- main done ---")
}
通过上面的代码,我们使用 GraceMQ 很轻松地就记录了5万条数据,丢失0条,服务器压力极小:
1 cpu 使用率 10%;
2 内存使用 < 50m;
3 对 Mysql 服务没有任何影响;
下一节我们将利用 GraceMQ 的消费机制,将数据存放到数据库中,请继续观看。