rabbit MQ在后台运行代码时报错Exception in thread "main" java.util.concurrent.TimeoutException at com.rabbitmq

rabbit MQ在后台运行代码时报错Exception in thread “main” java.util.concurrent.TimeoutException

首先在Linux上下载了rabbit QM
修改如下配置后启动
rabbit MQ在后台运行代码时报错Exception in thread
rabbit MQ在后台运行代码时报错Exception in thread
进入rabbit QM添加用户
rabbit MQ在后台运行代码时报错Exception in thread
然后在idea运行代码时报错:
代码如下
rabbit MQ在后台运行代码时报错Exception in thread
/**

  • 消费者
    */
    public class Recv {
    private final static String QUEUE_NAME = “simple_queue”;

    public static void main(String[] argv) throws Exception {
    // 获取到连接
    Connection connection = ConnectionUtil.getConnection();
    // 创建通道
    Channel channel = connection.createChannel();
    // 声明队列
    channel.queueDeclare(QUEUE_NAME, false, false, false, null);
    // 定义队列的消费者
    DefaultConsumer consumer = new DefaultConsumer(channel) {
    // 获取消息,并且处理,这个方法类似事件监听,如果有消息的时候,会被自动调用
    @Override
    public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
    byte[] body) throws IOException {
    // body 即消息体
    String msg = new String(body);
    System.out.println(" [x] received : " + msg + “!”);

         }
     };
     // 监听队列,第二个参数:是否自动进行消息确认。
     channel.basicConsume(QUEUE_NAME, true, consumer);
    

    }
    }

/**

  • 消费者,手动进行ACK
    */
    public class Recv2 {
    private final static String QUEUE_NAME = “simple_queue”;

    public static void main(String[] argv) throws Exception {
    // 获取到连接
    Connection connection = ConnectionUtil.getConnection();
    // 创建通道
    final Channel channel = connection.createChannel();
    // 声明队列
    channel.queueDeclare(QUEUE_NAME, false, false, false, null);
    // 定义队列的消费者
    DefaultConsumer consumer = new DefaultConsumer(channel) {
    // 获取消息,并且处理,这个方法类似事件监听,如果有消息的时候,会被自动调用
    @Override
    public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
    byte[] body) throws IOException {
    // body 即消息体
    String msg = new String(body);
    System.out.println(" [x] received : " + msg + “!”);
    // 手动进行ACK
    channel.basicAck(envelope.getDeliveryTag(), false);
    }
    };
    // 监听队列,第二个参数false,手动进行ACK
    channel.basicConsume(QUEUE_NAME, false, consumer);
    }
    }

/**

  • 生产者
    */
    public class Send {

    private final static String QUEUE_NAME = “simple_queue”;

    public static void main(String[] argv) throws Exception {
    // 获取到连接
    Connection connection = ConnectionUtil.getConnection();
    // 从连接中创建通道,使用通道才能完成消息相关的操作
    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 '" + message + "'");
    
     //关闭通道和连接
     channel.close();
     connection.close();
    

    }
    }
    无论运行哪一个,都报同样的错误,错误如下;

Exception in thread "main" java.util.concurrent.TimeoutException
	at com.rabbitmq.utility.BlockingCell.get(BlockingCell.java:77)
	at com.rabbitmq.utility.BlockingCell.uninterruptibleGet(BlockingCell.java:120)
	at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36)
	at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:494)
	at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:306)
	at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:64)
	at com.rabbitmq.client.impl.recovery.AutorecoveringConnection.init(AutorecoveringConnection.java:99)
	at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:948)
	at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:907)
	at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:865)
	at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1018)
	at com.wlkg.rabbitmq.util.ConnectionUtil.getConnection(ConnectionUtil.java:24)
	at com.wlkg.rabbitmq.simple.Recv.main(Recv.java:20)

19:55:24.380 [AMQP Connection 192.168.159.129:5672] ERROR com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured
java.net.SocketException: Socket Closed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
at java.io.DataInputStream.readUnsignedByte(DataInputStream.java:288)
at com.rabbitmq.client.impl.Frame.readFrom(Frame.java:91)
at com.rabbitmq.client.impl.SocketFrameHandler.readFrame(SocketFrameHandler.java:164)
at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:580)
at java.lang.Thread.run(Thread.java:748)

Process finished with exit code 1
端口和IP写在一个类中
/**
* 建立与RabbitMQ的连接
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception {
//定义连接工厂
ConnectionFactory factory = new ConnectionFactory();
//设置服务地址
factory.setHost(“192.168.159.129”);
//端口
factory.setPort(5672);
//设置账号信息,用户名、密码、vhost
factory.setVirtualHost("/wlkg");
factory.setUsername(“wlkg”);
factory.setPassword(“123456”);
// 通过工程获取连接
Connection connection = factory.newConnection();
return connection;
}

}
网上各种尝试,都不行,求大神帮忙!

你可能感兴趣的:(java,rabbitmq,linux)