You need to enable JavaScript to run this app.
TrafficRoute DNS 套件

TrafficRoute DNS 套件

复制全文
集成 DNS 高可用插件
为消息队列 RocketMQ 版集成 DNS 高可用插件
复制全文
为消息队列 RocketMQ 版集成 DNS 高可用插件

本文档介绍如何在火山引擎消息队列 RocketMQ 版的 Golang 客户端中集成 dns-stale-cache 插件。

前提条件

把 dns-stale-cache 插件集成到 SDK 工程

参见以下示例代码。

rocketmq-client-go SDK v2

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)
    }
}

API 参考

func NewCacheResolver

NewCacheResolver(addr []string, opts ...Option)

输入参数

参数名称类型是否必选说明
addr[]stringRocketMQ 客户端的 NameServer 地址。
optOption缓存配置选项。参见 缓存配置选项


缓存配置选项

参数说明
func WithCacheFirst(preferUse bool) Option是否优先返回缓存中匹配的查询结果。
  • true:域名解析时,优先返回缓存中匹配的查询结果,同时异步向 DNS 服务器发起 DNS 查询请求,并使用查询结果刷新缓存。
  • false:(默认)域名解析时,优先从 DNS 服务器获取查询结果。如果获取失败,再使用缓存中匹配的查询结果。
func WithIPConsistance(preferUse bool) Option是否把在内存中缓存的查询结果保存到文件。
  • false:(默认)不把缓存的查询结果保存到文件。
  • true:把缓存的查询结果保存到文件。默认路径是 /home/ip_info
func WithDnsTimeout(timeout time.Duration) Option向 DNS 服务器发起 DNS 查询请求的超时时间。如果在超时前没有获取查询结果,会使用缓存中匹配的查询结果。默认值为 1 s。

返回参数

类型说明
*CacheResolver实现 NsResolver 接口中的方法。
最近更新时间:2024.01.15 16:19:59
这个页面对您有帮助吗?
有用
有用
无用
无用