Соединение отказано в облаке amqp - PullRequest
0 голосов
/ 16 мая 2018

Я использую службу сообщений cloudamqp для тестирования MQ (в данном случае RabbitMQ). Я пытаюсь отправить сообщение в очередь из класса Java, но оно всегда говорит:

В соединении отказано

Также System.getenv возвращает ноль (я тоже застрял с этим).

Ниже приведен код и исключение:

    String uri = System.getenv("amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost");
        if (uri == null) uri = "amqp://guest:guest@localhost";
    ConnectionFactory factory = new ConnectionFactory();
    try {
        factory.setUri(uri);
    } catch (URISyntaxException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (KeyManagementException e) {
        e.printStackTrace();
    }

    //Recommended settings
    factory.setRequestedHeartbeat(30);
    factory.setConnectionTimeout(60000);

    Connection connection = null;
    try {
        connection = factory.newConnection(); //Getting Null Pointer here
    } catch (TimeoutException e) {
        e.toString();

StackTrace:

Exception in thread "main" java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:60)
    at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62)
    at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:134)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:997)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:956)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:914)
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1068)

Когда я ловлю универсальное исключение, оно ловит исключение нулевого указателя:

java.lang.NullPointerException @connection = factory.newConnection ()

1 Ответ

0 голосов
/ 16 мая 2018
String uri = 
System.getenv("amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost");
if (uri == null) uri = "amqp://guest:guest@localhost";

Это странно, либо вы устанавливаете uri как константу:

String uri = "amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost";

, либо пытаетесь получить значение uri для переменной среды по ее имени

System.getenv("AMQP_CONNECTION_STRING");
if (uri == null) uri = "amqp://guest:guest@localhost";
...