最近更新时间:2024.01.15 16:19:59
首次发布时间:2024.01.15 16:19:59
本文档介绍如何在火山引擎消息队列 RocketMQ 版的 Golang 客户端中集成 dns-stale-cache 插件。
参见以下示例代码。
import ( "fmt" "os" "github.com/apache/rocketmq-client-go/v2/producer" . "github.com/volcengine/dns-stale-cache/common" . "github.com/volcengine/dns-stale-cache/rocketmq/v2" ) func NewMQ() { addrs := []string{"127.0.0.1:9876"} p, _ := producer.NewDefaultProducer( producer.WithNsResolver(NewCacheResolver(addrs, WithCacheFirst(true), WithIPConsistance(true), WithDnsTimeout(2*time.Second), )), producer.WithRetry(2), ) err := p.Start() if err != nil { fmt.Printf("start producer error: %s", err.Error()) os.Exit(1) } }
NewCacheResolver(addr []string, opts ...Option)
参数名称 | 类型 | 是否必选 | 说明 |
---|---|---|---|
addr | []string | 是 | RocketMQ 客户端的 NameServer 地址。 |
opt | Option | 否 | 缓存配置选项。参见 缓存配置选项。 |
参数 | 说明 |
---|---|
func WithCacheFirst(preferUse bool) Option | 是否优先返回缓存中匹配的查询结果。
|
func WithIPConsistance(preferUse bool) Option | 是否把在内存中缓存的查询结果保存到文件。
|
func WithDnsTimeout(timeout time.Duration) Option | 向 DNS 服务器发起 DNS 查询请求的超时时间。如果在超时前没有获取查询结果,会使用缓存中匹配的查询结果。默认值为 1 s。 |
类型 | 说明 |
---|---|
*CacheResolver | 实现 NsResolver 接口中的方法。 |