Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接被拒绝的云amqp_Java_Rabbitmq_Queue_Amqp_Cloudamqp - Fatal编程技术网

Java 连接被拒绝的云amqp

Java 连接被拒绝的云amqp,java,rabbitmq,queue,amqp,cloudamqp,Java,Rabbitmq,Queue,Amqp,Cloudamqp,我正在使用cloudamqp消息服务来尝试MQs(在本例中是RabbitMQ)。我试图将一条消息从Java类推送到队列中,但它总是说: 拒绝连接 另外,System.getenv返回null(我也很难接受) 以下是代码和例外情况: String uri = System.getenv("amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost"); if (uri == null) uri = "amqp://guest

我正在使用cloudamqp消息服务来尝试MQs(在本例中是RabbitMQ)。我试图将一条消息从Java类推送到队列中,但它总是说:

拒绝连接

另外,System.getenv返回null(我也很难接受)

以下是代码和例外情况:

    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();
堆栈跟踪:

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)
当我捕获泛型异常时,它捕获空指针异常:

    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();
java.lang.NullPointerException @connection=factory.newConnection()

这很奇怪,, 您可以将uri设置为常量:

String uri = "amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost";
或者尝试通过环境变量的名称获取其uri值

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

你认为
System.getenv()
有什么作用?您正在尝试检索名为
amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost
我不认为这是您想要做的。您应该尝试设置一个类似于
CLOUDAMQP\u URL的环境变量=amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost
使用
导出
(在linux中)或
set
(在windows中)我不确定。我只是从cloudamqp教程中复制了这个示例。让我尝试使用uri=”amqp://xxuserxx:password_xxxxxxxxxx@Cloudamqhost/vhost“关于空指针,请确认什么是空的?(连接或工厂)您可以将环境变量设置为@piy26建议并检索该变量,或者直接按照建议设置值。已工作:D谢谢