2014-12-11 1 views
2

Подобные вопросы были заданы RabbitMQ on Amazon EC2 Instance & Locally? и cant connect from my desktop to rabbitmq on ec2 Но они получают различные сообщения об ошибках.Подключение к RabbitMQ на EC2 от внешнего клиента

У меня есть сервер RabbitMQ, работающий на моем экземпляре Linux EC2, который настроен правильно. Я создал пользовательских пользователей и дал им разрешения на чтение/запись в очереди. Используя локальный клиент, я могу правильно получать сообщения. Я настроил группы безопасности на EC2, так что порты (5672/25672) открыты и могут подключаться к этим портам telnet. Я также установил rabbitmq.conf, как это.

[ 
    {rabbit, [ 
      {tcp_listeners, [{"0.0.0.0",5672}]}, 
      {loopback_users, []}, 
      {log_levels, [{connection, info}]} 
      ] 
    } 
]. 

На данный момент у меня есть клиент на сервере, отправляющий в очередь.

У меня есть другой клиент, работающий на сервере вне EC2, который должен потреблять данные из одной очереди (я не могу запускать как на EC2, так и на потреблении, что делает много графиков/графических манипуляций).

Когда я пытаюсь соединиться однако от внешнего клиента, используя некоторый тестовый код

try { 
    ConnectionFactory factory = new ConnectionFactory(); 
    factory.setUri("amqp://****:****@****:5672/"); 
    connection = factory.newConnection(); 
} catch (IOException e) { 
    e.printStackTrace(); 

}

Я получаю следующее сообщение об ошибке.

com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Логин было отказано с использованием механизма аутентификации PLAIN. Для получения дополнительной информации см. Лог-файл брокера.

Однако в лог-файле брокера ничего нет, как будто я никогда не пытался подключиться. Я попытался подключиться с использованием индивидуальных методов получения/настройки на заводе, я пробовал использовать разные порты (вместе с их открытием).

Мне было интересно, нужно ли мне использовать SSL или нет для подключения к EC2, но от чтения по сети кажется, что он должен работать, но я не совсем уверен. Я не могу найти примеров того, как люди успешно добиваются того, что я пытаюсь сделать и документирую.

Заранее спасибо

ответ

2

Ответ был просто, что мне нужно, чтобы указать хост будет один и тот же IP я использую для SSH в. Я пытался использовать Elastic IP/public dns экземпляра экземпляра EC2, который, как я думал, должен указывать на одну и ту же машину.

Хотя я пробовал много вещей, включая настройку SSL-соединения, в этом не было необходимости.

Все, что требуется, это:

  1. Создать пользователя RabbitMQ с помощью rabbitmqctrl и дать ему соответствующие разрешения
  2. Откройте необходимые порты на EC2 через меню групп безопасности (по умолчанию 5672)
  3. Использование клиентской библиотеки для подключения к правильному имени хоста/имени пользователя/паролю/порту, где имя хоста совпадает с машиной, в которую вы обычно включаете SSH.
+0

спасибо Пол !!!! вы спасли мой следующий час поиска: D – doniyor