1

我一直在运行 hello world RabbitMQ 示例,代码如下:

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

public class Send {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv) throws java.io.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 '" + message + "'");
        channel.close();
        connection.close(); 
      }
    }

和:

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

public class Recv {
      private final static String QUEUE_NAME = "hello";

      public static void main(String[] argv)
          throws java.io.IOException,
                 java.lang.InterruptedException {

          ConnectionFactory factory = new ConnectionFactory();
          factory.setHost("localhost");
          Connection connection = factory.newConnection();
          Channel channel = connection.createChannel();

          channel.queueDeclare(QUEUE_NAME, false, false, false, null);
          System.out.println(" [*] Waiting for messages. To exit press CTRL+C");

          QueueingConsumer consumer = new QueueingConsumer(channel);
          channel.basicConsume(QUEUE_NAME, true, consumer);

          while (true) {
              QueueingConsumer.Delivery delivery = consumer.nextDelivery();
              String message = new String(delivery.getBody());
              System.out.println(" [x] Received '" + message + "'");
         }
    }
}

当我运行接收器时,它会监听队列,发送者说它正在发送消息,但似乎没有关闭。然后我运行:

rabbitmqctl list_queues

队列肯定正在创建中。

但是,当我运行时:

rabbitmqctl list_connections

我得到以下输出

benuni@DeShawn:~$ sudo rabbitmqctl list_connections
ls: cannot access /etc/rabbitmq/rabbitmq.conf.d: No such file or directory
Listing connections ...
guest   127.0.0.1   64700   blocked
guest   127.0.0.1   64709   blocked
guest   127.0.0.1   64614   blocked
guest   127.0.0.1   64716   blocked
guest   127.0.0.1   64717   blocked
guest   127.0.0.1   64701   blocked
guest   127.0.0.1   64699   blocking
guest   127.0.0.1   64613   blocking
guest   127.0.0.1   64708   blocking
guest   127.0.0.1   64718   blocked
guest   127.0.0.1   64706   blocked
...done.

所以由于某种原因rabbitmq服务器阻止了我的连接?有谁知道我需要做什么?谢谢,本

4

2 回答 2

2

检查日志中的消息,例如:

=INFO REPORT==== 2-Jul-2012::13:38:02 ===
Disk free space limit now exceeded. Free bytes:13114646528 Limit:15740784640

有关更多信息,请参阅http://comments.gmane.org/gmane.comp.networking.rabbitmq.general/16493

于 2012-07-02T13:42:57.643 回答
1

当您看到这样的连接被阻止时,这意味着您可能超出了磁盘和/或内存的水印级别。

有关更多信息,请参见:http ://www.rabbitmq.com/memory.html。

于 2013-01-17T19:27:38.050 回答