golang微服务框架go-micro使用 (五) Message Broker

本文介绍了在Go-Micro微服务框架中如何利用Broker接口进行消息处理,强调了Broker在异步消息处理中的核心地位。通过示例展示了如何使用Broker.Subscribe方法,特别提到了Broker.SubscribeOption的配置,如DisableAutoAck和Queue,并指出不同broker插件可能提供的额外选项。文章还提及了将Kafka作为消息队列的集成,提供了go.mod和main.go的配置示例。
摘要由CSDN通过智能技术生成

前一篇文章,我们讨论了在micro中如何发布/订阅消息。它的优点是简单,缺点是缺乏灵活性。如果你想使用底层去发送与接收消息,需要使用接口:github.com/micro/go-micro/v2/broker.Broker
这个接口是micro异步消息处理的核心,事实上,发布/订阅也依赖它

下面,使用一个例子来使用Broker

package main

import (
	"fmt"
	"github.com/micro/go-micro/v2"
	"github.com/micro/go-micro/v2/broker"
	"log"
	"time"
)

var topic string = "com.foo.topic"

func pub(brk broker.Broker) {
   
	i := 0
	for range time.Tick(time.Second) {
   
		msg := &broker.Message{
   
			Header: map[string]string{
   "id" : fmt.Sprintf("%d", i)},
			Body:   []byte(fmt.Sprintf("%d:%s", i, time.Now().String())),
		}
		if err := brk.Publish(topic,msg); err != nil {
   
			log.Printf("[pub] failed: %v\n", err)
		} else  {
   
			log.Printf("[pub] pubbed message:%s\n", string(msg.Body))
		}
		i++
	}
}

func sub(brk broker.Broker)  {
   
	_, err := brk.Subscribe(topic, func(event broker.Event) error {
   
		fmt.Println("[sub] received message:", string(event.Message().Body), ", header:", event.Message().Header)
		return nil
	}, broker.Queue(topic))</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值