记录一下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)
}
}
至此问题解决。