在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:rabbitmq-pool-router-path-go开源软件地址:https://gitee.com/tym_hmm/rabbitmq-pool-router-path-go开源软件介绍:go rabbitMq 队列路由处理最新版本 v1.1.8描述1、rabbitmq 使用同一交换机,队列, routekey, 监听队列后通过消息路由routePath 进行区分任务逻辑 2、兼容rabbitmq链接池自定义 VirtualHosts 使用案例生产项目已使用,每日处理上亿数据,每秒可处理1000+队列消息,rabbitmq集群及服务应用未出现较高压力 组件说明接入说明go get -u gitee.com/tym_hmm/rabbitmq-pool-router-path-go 生产者声明var wg sync.WaitGroupexchangeName := "test-data-center-exchange-name"exchangeType := RabbitmqPool.EXCHANGE_TYPE_TOPICqueueName := "test-data-center-queue-name"routeKey := "test-data"routePath := "/test/a"wg.Add(2)go func() { defer wg.Done() data:="这是一个数据test/a" //使用默认VirtualHosts 发送 //product:=RabbitmqRoute.NewProductClient(host, port, user, pwd) //使用自定义VirtualHosts 发送 product:=RabbitmqRoute.NewProductClientVirtualHosts(host, port, user, pwd, "/temptest1") err:=product.Publish(exchangeName, exchangeType, queueName, routeKey, routePath, data) if err !=nil{ fmt.Println(err) }}()go func() { defer wg.Done() routePatsh := "/testaa" datas:="这是一个数据test" //使用默认VirtualHosts 发送 //products:=RabbitmqRoute.NewProductClient(host, port, user, pwd) //使用自定义VirtualHosts 发送 products:=RabbitmqRoute.NewProductClientVirtualHosts(host, port, user, pwd, "/temptest1") errs:=products.Publish(exchangeName, exchangeType, queueName, routeKey, routePatsh, datas) if errs !=nil{ fmt.Println(errs) }}() wg.Wait() 消费者声明consumer := RabbitmqRoute.NewTask(host, port, user, pwd) //设置加载的节点信息(暂时只支持单节点加入)consumer.SetHandleNode(&RabbitmqRoute.NodeInfo{ NodeName: "dataCenter", ExchangeName: "test-data-center-exchange-name", ExchangeType: RabbitmqPool.EXCHANGE_TYPE_TOPIC, Route: "test-data", QueueName: "test-data-center-queue-name", IsTry: false, MaxReTry: 1,}) //注册加载的路由consumer.RouteRegister(func(engine *RabbitmqRoute.TaskEngine) { //fmt.Println(engine) engine.AddRoute("/test", func(c *RabbitmqRoute.TaskContext) { fmt.Println(c.Request.Data) //c.Request.Data }) engine.AddRoute("/test/a", func(c *RabbitmqRoute.TaskContext) { fmt.Println(c.Request.Data) })}) err := consumer.Enter() if err != nil { fmt.Println(err) }
全部评论
专题导读
上一篇:submariner: Submariner是一种用于连接不同Kubernetes集群的overlay网络的工具。 ...发布时间:2022-03-25下一篇:charts: 精选的Rancher 2.0增强版Helm charts发布时间:2022-03-25热门推荐
热门话题
阅读排行榜
|
请发表评论