java - RabbitMQ 连接重置

标签 java rabbitmq

我正在尝试使用 java 代码将一个简单的 RabbitMQ 连接到我的服务器(正在执行 RabbitMQ 服务)。
执行以下代码( source here )给我 java.net.SocketException:连接重置 异常(exception)。

import java.io.*;
import java.security.*;


import com.rabbitmq.client.*;

public class test
{
    public static void main(String[] args) throws Exception
    {

        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("myIP");  //myIP is just dummy text, I have a real IP there
        factory.setPort(5672);
        factory.setUsername("admin");
        factory.setPassword("sesgo");
        factory.setVirtualHost("vSESGO");

        factory.useSslProtocol();

        Connection conn = factory.newConnection();
        Channel channel = conn.createChannel();

        channel.queueDeclare("rabbitmq-java-test", false, true, true, null);
        channel.basicPublish("", "rabbitmq-java-test", null, "Hello, World".getBytes());


        GetResponse chResponse = channel.basicGet("rabbitmq-java-test", false);
        if(chResponse == null) {
            System.out.println("No message retrieved");
        } else {
            byte[] body = chResponse.getBody();
            System.out.println("Recieved: " + new String(body));
        }


        channel.close();
        conn.close();
    }
}

我在网上寻找答案,我已经尝试过:
  • 验证服务器是否已打开我要连接的端口。
  • 验证客户端不会阻止我与防火墙等的连接
  • 在 RabbitMQ 上创建一个新的虚拟主机并授予它权限。
  • 验证 iptables 不会在服务器端阻止我。

  • 似乎没有任何效果,有什么想法吗?

    完整的堆栈跟踪在这里:
    This trust manager trusts every certificate, effectively disabling peer verification. This is convenient for local development but prone to man-in-the-middle attacks. Please see http://www.rabbitmq.com/ssl.html#validating-cerficates to learn more about peer certificate validation.
    Exception in thread "main" java.net.SocketException: Connection reset
     at java.net.SocketInputStream.read(Unknown Source)
     at java.net.SocketInputStream.read(Unknown Source)
     at sun.security.ssl.InputRecord.readFully(Unknown Source)
     at sun.security.ssl.InputRecord.read(Unknown Source)
     at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
     at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
     at sun.security.ssl.AppOutputStream.write(Unknown Source)
     at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
     at java.io.BufferedOutputStream.flush(Unknown Source)
     at java.io.DataOutputStream.flush(Unknown Source)
     at com.rabbitmq.client.impl.SocketFrameHandler.sendHeader(SocketFrameHandler.java:147)
     at com.rabbitmq.client.impl.SocketFrameHandler.sendHeader(SocketFrameHandler.java:153)
     at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:294)
     at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:63)
     at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:99)
     at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:921)
     at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:880)
     at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:838)
     at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:990)
     at test.main(test.java:25)
    

    最佳答案

    我在这里遇到了同样的问题:RabbitMQ Connection reset Exception . Windows 的解决方案是在rabbit 配置文件中为证书和 key 的路径添加反斜杠。

    关于java - RabbitMQ 连接重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50562203/

    相关文章:

    javascript - 将 VueJS 连接到 RabbitMQ

    java - 如何用正则表达式替换字符串值

    java - 从数组到 JPanel 的绘制点

    java - 从数据库获取的日期(时间戳)增加 1 年

    java - "Fix your application"部署 war 时来自 glassfish 的警告

    java - Amqp 客户端未连接到 activemq 服务器。

    rabbitmq - 当rabbitmq从队列中删除消息?

    redis - “排队”教程和文档?

    ruby-on-rails - RabbitMQ/Sneakers - 将特定队列一次限制为仅一名 worker ?

    java - 如何使两个球相撞并朝相反方向偏转?