如何设置连接友好名称

时间:2018-09-29 13:03:14

标签: go amqp

我在应用程序中使用了http://github.com/streadway/amqp软件包,以便处理与远程RabbitMQ服务器的连接。一切正常,一切正常,但是我有问题吗?

连接的当前名称为“ ip:port”,但是当您从同一ip中选择名称时,该名称会变得更好。

有什么办法设置我的友好名字?

1 个答案:

答案 0 :(得分:3)

RabbitMQ 3.6.5添加了用于连接客户端报告友好名称字符串值的功能,以标识出于管理目的的连接。严格来说,这是一个标识符,并且正如客户端报告的那样,除了弱标识连接之外,不能依赖它。 release notes状态:

  

客户端现在可以提供人类可读的连接名称,该名称将显示在管理UI中。为了使用此功能,请在客户端属性中设置connection_name键。请注意,此名称不必唯一,也不能用作连接标识符,例如在HTTP API请求中。


解决方案

假设您使用的是RabbitMQ的最新版本,则在使用streadway/amqp进行连接时,可以通过进行初始连接时传递amqp.Config的实例来设置此参数。 Properties字段允许指定连接的自定义属性。

下面的示例程序使用环境变量AMQP_URL中提供的AMQP URL打开连接,该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://admin:password@localhost:5672 go run ./main.go connX

用数字代替X的结果在RabbitMQ管理Web UI的“连接”页面中产生以下输出:

RabbitMQ connections showing friendly names conn1, conn2 and conn3.

并且各个连接的详细信息页面在“客户端提供的名称”详细信息值下方显示该值:

Client-provided name shows the connection name on the connection detail page in the management UI.