RabbitMQ 3.6.5增加了一个功能,允许连接的客户端报告一个“友好名称”字符串值,以便于管理目的识别连接。这仅仅是一个标识符,因为它是由客户端报告的,所以除了弱标识连接外,不能依靠它进行其他任何操作。发布说明中指出:
现在客户端可以提供一个可读的连接名称,将显示在管理UI中...为使用此功能,请在客户端属性中设置connection_name
键。请注意,此名称不必是唯一的,并且不能用作连接标识符,例如,在HTTP API请求中。
解决方案
假设您使用的是足够新的RabbitMQ版本,您可以在使用streadway/amqp
进行连接时通过传递amqp.Config
实例来设置此参数。 Properties
字段允许指定连接的自定义属性。
下面的示例程序使用环境变量AMQP_URL
中提供的AMQP URL打开连接,该连接使用作为调用的第一个命令行参数传递的连接名称进行标识。
package main
import (
"log"
"os"
"github.com/streadway/amqp"
)
func main() {
amqpUrl := os.Getenv("AMQP_URL")
cfg := amqp.Config{
Properties: amqp.Table{
"connection_name": os.Args[1],
},
}
conn, err := amqp.DialConfig(amqpUrl, cfg)
if err != nil {
log.Fatal(err)
}
defer conn.Close()
<-(chan struct{})(nil)
}
使用以下命令行启动多个实例连接到本地RabbitMQ实例:
AMQP_URL=amqp:
在 RabbitMQ 管理 Web UI 的“连接”页面中,将数字替换为 X
,将产生以下输出:
![RabbitMQ connections showing friendly names conn1, conn2 and conn3.](https://istack.dev59.com/YU8Vq.webp)
个人连接详细页面显示“客户提供的名称”详细值下的值:
![Client-provided name shows the connection name on the connection detail page in the management UI.](https://istack.dev59.com/AuyL7.webp)
/etc/hosts
文件中添加域名和地址。Windows系统也有类似的功能。请注意,需要将域名和地址分别填写在相应的位置。 - nilsocket