go stomp 客户端中 ActiveMQ 的故障转移 URI

我们如何在 Go 中使用故障转移 stomp 连接 URI 连接到 ActiveMQ?使用Go-Stomp客户端,我尝试了以下代码,但无法连接。


if conn, err = stomp.Dial("tcp", "failover:(tcp://10.01.02.03:61613,tcp://10.04.05.06:61613)?startupMaxReconnectAttempts=2"); err != nil {

        panic(fmt.Sprintf("Could not connect to ActiveMQ using brokerUri %v. Can not continue.", Config.Broker.URI))

    }


慕容森
浏览 205回答 2
2回答

犯罪嫌疑人X

由于缺乏对故障转移的支持,不得不编写一些代码来达到预期的效果。//connect to ActiveMQ using failover approach    var err error    for _, uri := range ["10.01.02.03:61613","10.04.05.06:61613", {        if err = connect(uri); err == nil {            break        }    }    if conn == nil {        panic(fmt.Sprintf("Could not connect to ActiveMQ using brokerUri. Can not continue."))    }func connect(brokerIp string) (err error) {    log.Printf("Attempting to connect to ActiveMQ node %v", brokerIp)    if conn, err = stomp.Dial("tcp",        brokerIp,        stomp.ConnOpt.Login(Broker.User, Broker.Password)); err != nil {        log.Printf("Faild to connect to ActiveMQ using %v", brokerIp)    }    if err == nil {        log.Printf("Successfully connected to ActiveMQ node %v", brokerIp)    }    return}

月关宝盒

您收到的错误是什么?我不相信你的 Dial 的格式是正确的:Go-Stomp Dial 使用底层 net.Dialfunc Dial(network, addr string, opts ...func(*Conn) error) (*Conn, error) {c,错误:= net.Dial(网络,地址)底层的 net.Dial 文档说明对于 TCP 和 UDP 网络,地址的格式为 host:port。如果主机是文字 IPv6 地址,则必须将其括在方括号中,如“[::1]:80”或“[ipv6-host%zone]:80”。函数 JoinHostPort 和 SplitHostPort 以这种形式操作地址。如果主机为空,如“:80”,则假定为本地系统。没有故障转移:语法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go