Rabbitmq &引用;“你好,世界”;不为兔子工作

Rabbitmq &引用;“你好,世界”;不为兔子工作,rabbitmq,Rabbitmq,我是rabbitmq的新手,但出于某种(未知)原因,“你好 “世界”计划对我不起作用。 send.py和receive.py只是从 教程页面: rabbitmq是在RHEL 6上使用“yum”安装的。Python版本是2.6。 我使用 $ service rabbitmq-server start 它会打印“成功” 运行send.py和不会出现错误或警告消息 receive.py: $ python send.py [x] Sent 'Hello World!' $ python rec

我是rabbitmq的新手,但出于某种(未知)原因,“你好 “世界”计划对我不起作用。 send.py和receive.py只是从 教程页面:

rabbitmq是在RHEL 6上使用“yum”安装的。Python版本是2.6。 我使用

$ service rabbitmq-server start
它会打印“成功”

运行send.py和不会出现错误或警告消息 receive.py:

$ python send.py
 [x] Sent 'Hello World!'

$ python receive.py
 [*] Waiting for messages. To exit press CTRL+C
然后它就不会打印“你好,世界!”


有什么问题吗?

首先启用管理控制台

sudo rabbitmq-plugins enable rabbitmq_management
然后打开浏览器

http://localhost:55672
登录:guest/guest

在我的例子中,是内存(低于2GA)和消息“此节点的磁盘可用空间警报已关闭。它将阻止传入的网络流量,直到可用空间量超过限制。”

编辑文件
/etc/rabbitmq/rabbitmq.config
,如下所示:

 [
    {rabbit, [{disk_free_limit, {mem_relative, 0.1}}]}
 ]
现在重新启动rabbit服务:

service rabbitmq-server stop
service rabbitmq-server start

您必须启动
Rabbit MQ Serever
。在windows文件名中:
RabbitMQ服务-start
。您可以使用以下代码:

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 file

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

我不想在这里说明显而易见的问题,但请检查发送和接收代码是否连接到同一服务器,队列名称和队列设置是否相同。如果是这种情况,您可以尝试启用管理插件并通过浏览器查看队列。如果队列工作正常,您将看到队列被创建,然后在队列上有消息。此代码在VM上运行。我不确定发生了什么,因为虚拟机对我来说就像一个黑盒子。但是我已经在另一台机器上测试过了(真实的,不是虚拟的),它可以工作!任何人都知道“hello world”代码在VM上不起作用的可能原因是什么?代码和MQ都在VM上运行?是的。运行rabbitmqctl list\ u连接后。我们看到这些消息由于“资源”而被阻止。是内存还是磁盘报警?什么可以阻止消息?可以包含rabbitmqctl报告的输出吗。您还启用了管理插件吗?如果不应该,那么您可以通过浏览器查看所有详细信息。谢谢!通过运行sudo rabbitmqctl status,我得到了以下结果:{disk_free_limit,8335626240},{disk_free,3692666880},实际上是磁盘空闲(RabbitMQ需要8.3 GB,但我只有3.6 GB)。如何更改磁盘可用限制?+1对于编辑,它帮助很大。起初,我认为它是拼错的JSON,但事实证明,它不是,并且末尾的逗号和点是必需的。谢谢。我没有发现/etc/rabbitmq/rabbitmq.config存在,我可以手动创建该文件吗?文件的初始内容应该是什么?请检查:,如果不存在,我可以创建它。您使用的操作系统版本是什么?对于rabbitmq的较新版本,端口是15672,而不是55672