Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 RabbitMQ";“你好,世界”;示例给出了“;“拒绝连接”;_Java_Exception Handling_Rabbitmq - Fatal编程技术网

Java RabbitMQ";“你好,世界”;示例给出了“;“拒绝连接”;

Java RabbitMQ";“你好,世界”;示例给出了“;“拒绝连接”;,java,exception-handling,rabbitmq,Java,Exception Handling,Rabbitmq,我正在尝试从这里创建“hello world”应用程序: 以下是我的制作人课程代码: package com.mdnaRabbit.producer; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; import java.io.IOException; public class App {

我正在尝试从这里创建“hello world”应用程序:

以下是我的制作人课程代码:

package com.mdnaRabbit.producer;

import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;

import java.io.IOException;

public class App {

    private final static String QUEUE_NAME = "hello";

    public static void main( String[] argv) throws IOException{
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "Hello World!";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
        System.out.println(" [x] Sent" + "'");
        channel.close();
        connection.close();
    }
}
下面是我在执行此操作时得到的结果:

Exception in thread "main" java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at com.rabbitmq.client.ConnectionFactory.createFrameHandler(ConnectionFactory.java:445)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:504)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:533)
at com.mdnaRabbit.producer.App.main(App.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Process finished with exit code 1
这是什么原因造成的


我在这里找到了问题的解决方案

为了解决这个问题,我安装了RabbitMQ服务器。如果未安装rabbitmq服务器,将引发此错误。 点击

确保您已安装RabbitMQ服务器,并且该服务器已启动并运行。我还收到了此“连接被拒绝”错误:

Exception in thread "main" java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.java:32)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:588)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:612)
at ReceiveLogs.main(ReceiveLogs.java:14)
我犯了一个错误,将
/etc/rabbitmq/rabbitmq env.conf
内部的IP地址设置为错误的IP地址:

NODE_IP_ADDRESS=10.0.1.45

我删除了此配置参数,错误消失。

我只需执行以下命令即可解决此问题:

 sudo rabbitmq-server

启动rabbitmq服务器。启动此服务器的批处理文件位于rabbitmq_server-3.6.0\sbin>rabbitmq-server.bat start下,然后它将工作。

在我的情况下,它在尝试启动服务器时给我以下错误

\rabbitmq_server-3.6.0\sbin>rabbitmq-server.bat启动
错误:主机协议的epmd错误:inet_tcp:注册/侦听错误:ECONREFUSE:NXDOMIN(不存在的域)

我所做的是在我的
主机
文件中添加以下行:

127.0.0.1本地主机


然后rabbitmq服务器启动。在此之后,我再也没有收到
连接拒绝
错误。希望这能有所帮助。

你必须从现在开始

在windows文件名中:RabbitMQ服务-启动

您可以使用以下代码:

import java.io.IOException;
import java.util.ResourceBundle;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class NewTaskController implements Runnable {
    private final String message;

     private static final String EXCHANGE_NAME = "test";

     private static final String ROUTING_KEY = "test";

     public NewTaskController(final String message) {
         this.message = message;
     }

     @Override
     public void run() {

        //getting data from application.properties
         //for the rabbit_mq configuration

         ResourceBundle mRB = ResourceBundle.getBundle("application");


         System.out.println("*****NewTaskController************"+mRB.getString("rabbitmq.port"));
        String rabbitmq_username = mRB.getString("rabbitmq.username");
        String rabbitmq_password = mRB.getString("rabbitmq.password");
                String rabbitmq_hostname = mRB.getString("rabbitmq.hostname");
                        int rabbitmq_port = Integer.parseInt(mRB.getString("rabbitmq.port"));
     ConnectionFactory factory = new ConnectionFactory();
     factory.setUsername(rabbitmq_username);
     factory.setPassword(rabbitmq_password);
     factory.setHost(rabbitmq_hostname);
     factory.setPort(rabbitmq_port);
     Connection conn;
     try {
     conn = factory.newConnection();
     Channel channel = conn.createChannel();

     channel.exchangeDeclare(EXCHANGE_NAME, "direct", true);
     String queueName = channel.queueDeclare().getQueue();
     System.out.println(queueName);
     channel.queueBind(queueName, EXCHANGE_NAME, ROUTING_KEY);
     System.out.println("Producing message: " + message + " in thread: " + Thread.currentThread().getName());
     channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, null, message.getBytes());

     try {
        channel.close();
    } catch (TimeoutException e) {
        e.printStackTrace();
    }
     conn.close();
     } catch (IOException | TimeoutException e) {
     e.printStackTrace();
     }
}
}
application.properties文件:

rabbitmq.username=guest
rabbitmq.password=guest
rabbitmq.hostname=localhost
rabbitmq.port=5672

如果您已经在本地安装了rabbitmq,那么简单的修复就是,
rabbitmq服务器

从Mac OS X Sierra迁移到High Sierra后,我遇到了防火墙问题。我已经安装了RabbitMQ。然而,我一直收到这个
连接被拒绝的
错误。我必须做到以下几点:

  • brew卸载rabbitmq
  • brew安装rabbitmq
  • rabbitmq服务器
    (并允许防火墙权限)
  • 在本地运行应用程序

  • 有时候你只需要重新启动mac电脑。尝试了这里的所有其他解决方案以及不同问题的其他解决方案,尽管听起来很愚蠢,但重新启动最终让mac电脑恢复运行并能够达到预期的效果http://localhost:15672/


    这是在我完成了
    brew升级之后(这可能会使我处于一种糟糕的状态)。

    作为参考,谷歌说bазззааааааааазаааа107?很抱歉,那没有翻译这个。我没有注意到。嗯,thegrinner,那篇文章描述了解决我问题的方法,但我在看到那篇文章之前就解决了它。非常感谢。更具体地说,如果RabbitMQ未运行,将抛出此错误。此。为我工作。我们已经将NODE_IP_ADDRESS设置为127.0.0.1,因此侦听器无法连接到它,当我在那里设置服务器IP地址时,侦听器开始工作。