记录一下golang 连接rabbitmq时,密码含有特殊符号的处理方式

golang 在使用 rabbitmq 的时候,连接的方式如下:

package main
import (
    "fmt"
    "github.com/streadway/amqp"
)
var mqurl string
func main() {
    mqurl = fmt.Sprintf("amqp://%s:%s@%s:%s/",
      RabbitmqSetting.UserName,
      RabbitmqSetting.Password,
      RabbitmqSetting.Host,
      RabbitmqSetting.Port,
    )
  
    conn, err = amqp.Dial(mqurl)
    if err != nil {
        log.Fatalf("连接失败,错误信息如下:,%s", err)
    }
}

但是上述方式,会出现无法连接,观察报错信息发现,会自动把密码中的 # 给进行截断解析

所以,需要对密码使用 url.QueryEscape 进行单独处理,处理如下:

url.QueryEscape(xxx)

处理过后的代码如下:

package main
import (
    "fmt"
    "github.com/streadway/amqp"
)
var mqurl string
func main() {
    mqurl = fmt.Sprintf("amqp://%s:%s@%s:%s/",
      RabbitmqSetting.UserName,
      url.QueryEscape(RabbitmqSetting.Password),
      RabbitmqSetting.Host,
      RabbitmqSetting.Port,
    )
  
    conn, err = amqp.Dial(mqurl)
    if err != nil {
        log.Fatalf("连接失败,错误信息如下:,%s", err)
    }
}

至此问题解决。

文章作者: sopp
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 个人主页
golang golang rabbitmq
喜欢就支持一下吧