Подключение к Amazon ActiveMQ с именем пользователя и паролем - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь подключиться к ActiveMQ Amazon Broker через SSL.Моя заявка написана на C#.Ранее я подключался через TCP к локальному брокеру ActiveMQ, который работал:

using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Apache.NMS.ActiveMQ.Commands;


void Connect()
{       
    String brokerUri = "activemq:tcp://" + host + ":" + port + "? transport.useLogging=true&wireFormat.maxInactivityDuration=0&userName=myUsername&password=myPassword";
    NMSConnectionFactory factory = new NMSConnectionFactory(brokerUri);
    IConnection connection = factory.CreateConnection();
    connection.Start();
}

Чтобы подключиться к ActiveMQ брокеру Amazon через SSL, я изменил код следующим образом:

void Connect()
{
    String brokerUri = "ssl://" + host + ":" + port + "? transport.useLogging=true&wireFormat.maxInactivityDuration=0&userName=myUsername&password=myPassword";
    SslTransportFactory transportFactory = new SslTransportFactory();
    Uri uri = new Uri(brokerUri);
    ITransport transport = transportFactory.CreateTransport(uri);
    transport.Command = Command;
    transport.Exception = Exception;
    transport.Start();

    ConnectionFactory factory = new ConnectionFactory(brokerUri);
    IConnection connection = factory.CreateConnection();

    Connection con = (Connection)connection;
    con.ITransport = transport;

    con.Start();                  => Here the exception is thrown: User name [null] or password is invalid. 
}

private void Exception(ITransport sender, Exception command)
{            
}

private void Command(ITransport sender, Command command)
{            
}

Однако при установлении соединения User name [null] or password is invalid. Исключение выдается.

Пожалуйста, сообщите.

1 Ответ

0 голосов
/ 06 декабря 2018

В настоящее время вы передаете учетные данные пользователя через URI.Однако я не вижу ссылки на username или password в справочной документации URI .Кроме того, тот факт, что исключение указывает на то, что имя пользователя null, указывает, что учетные данные пользователя в вашем URI просто игнорируются.

Вместо этого следует передавать учетные данные пользователя в методе CreateConnection, как описано здесь , например:

IConnection connection = factory.CreateConnection("myUsername", "myPassword");
...