Как установить дружественное имя подключения - PullRequest
0 голосов
/ 29 сентября 2018

Я использовал пакет http://github.com/streadway/amqp в своем приложении для обработки соединений с удаленным сервером RabbitMQ.Все в порядке и работает нормально, но у меня есть вопрос?

Текущее имя для подключения "ip: port", но может стать лучше, если у вас есть выбранное имя с того же ip.

Есть ли способ установить мое дружеское имя?

1 Ответ

0 голосов
/ 29 сентября 2018

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:

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.

...