RabbitMQ 3.6.5 добавила возможность для подключающегося клиента сообщать понятное имя строковое значение для идентификации соединения для целей управления.Это строго идентификатор, и, как сообщается клиентом, на него нельзя полагаться ни для чего, кроме слабой идентификации соединений.Состояние примечаний к выпуску :
Клиенты теперь могут предоставлять понятное человеку имя соединения, которое будет отображаться в пользовательском интерфейсе управления ... Чтобы использовать эту функцию, установитеconnection_name
введите свойства клиента.Обратите внимание, что это имя не обязательно должно быть уникальным и не может использоваться в качестве идентификатора соединения, например, в запросах HTTP API.
Решение
При условии, что выиспользуя достаточно новую версию RabbitMQ, вы можете установить этот параметр при установлении соединений, используя streadway/amqp
, передавая экземпляр amqp.Config
при установлении начального соединения.Поле Properties
позволяет указывать пользовательские свойства соединения.
Пример программы ниже открывает соединение, используя URL-адрес AMQP, предоставленный в переменной среды 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://admin:password@localhost:5672 go run ./main.go connX
, где цифра заменяется на X
выводит следующий вывод на странице «Соединения» веб-интерфейса управления RabbitMQ:
, а на страницах сведений об отдельных соединениях отображается значение под "Предоставленное клиентом имя "значение детализации: