fix NewResolver bug
For Redis: go-redis client version >= v6.15
For RocketMQ: rocketmq-client-go version >= v2
go get github.com/volcengine/dns-stale-cache
package main import ( "context" "fmt" "os" "strconv" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/primitive" "github.com/apache/rocketmq-client-go/v2/producer" . "github.com/volcengine/dns-stale-cache/common" . "github.com/volcengine/dns-stale-cache/rocketmq/v2" ) // Package main implements a simple producer to send message. func main() { addrs := []string{"localhost:9876"} p, _ := rocketmq.NewProducer( producer.WithNsResolver(NewCacheResolver(addrs, WithCacheFirst(true), WithIPConsistance(true), WithDnsTimeout(1*time.Second), )), producer.WithRetry(2), ) err := p.Start() if err != nil { fmt.Printf("start producer error: %s", err.Error()) os.Exit(1) } topic := "TopicTest" for i := 0; i < 10; i++ { msg := &primitive.Message{ Topic: topic, Body: []byte("Hello RocketMQ Go Client! " + strconv.Itoa(i)), } res, err := p.SendSync(context.Background(), msg) if err != nil { fmt.Printf("send message error: %s\n", err) } else { fmt.Printf("send message success: result=%s\n", res.String()) } } err = p.Shutdown() if err != nil { fmt.Printf("shutdown producer error: %s", err.Error()) } }
package main import ( "context" "errors" "fmt" "time" "github.com/redis/go-redis/v9" . "github.com/volcengine/dns-stale-cache/common" . "github.com/volcengine/dns-stale-cache/redis/v9" ) func ExampleNewClient() { opt := &redis.Options{ Addr: "localhost:6379", // use default Addr } opt.Dialer = NewDialerWithCache(opt, WithCacheFirst(true), WithIPConsistance(true), WithDnsTimeout(2*time.Second), ) rdb := redis.NewClient(opt) pong, err := rdb.Ping(context.Background()).Result() fmt.Println(pong, err) // Output: PONG <nil> }
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
Requirement
For Redis: go-redis client version >= v6.15
For RocketMQ: rocketmq-client-go version >= v2
Installation
Example
For rocketmq client/v2
For redis client/v9