java - pythonrabbitmqadmin listqueues命令虽然存在消息但无法获取消息内容

标签 java rabbitmq spring-rabbit rabbitmqctl rabbitmqadmin

我正在学习rabbitMq,现在我想知道如何查看队列内容。

首先,我希望有一天我在谷歌上搜索了这个问题并了解了命令

python rabbitmqadmin list queues

我编写了 2 个独立的应用程序。

发件人:

@Autowired
private AmqpTemplate template;
 ...

  for (int i = 0; i < 100; i++) {
        template.convertAndSend("queue1", "message_" + i);
  }

接收者:

@RabbitListener(queues = "queue1")
public void listenQueue1(String message, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
    logger.info("Got message:[" + message + "]");
}

如果我一起运行这些应用程序 - 我会在接收方看到消息。

为了查看队列中的消息,我决定停止receiver并运行sender

  1. 我运行发件人
  2. 执行pythonrabbitmqadmin列表队列

并看到以下结果:

+-----------------+----------+
|      name       | messages |
+-----------------+----------+
| query-example-6 |          |
| queue1          |          |
| queue2          |          |
| queue3          |          |
| queue4          |          |
| queue5          |          |
| queue6          |          |
| queue7          |          |
| queue8          |          |
| queue9          |          |
+-----------------+----------+

3.然后我运行接收器并查看接收器接受消息的日志

您能解释一下我在控制台中看不到消息的原因吗?

如何查看队列消息内容。

最佳答案

我对rabbitmq不熟悉。

也许该消息是“未确认的”?

例如我发现我的队列有一条消息:

$ rabbitmqadmin list queues name node messages

+----------------------------+----------------+----------+
|            name            |      node      | messages |
+----------------------------+----------------+----------+
| my_queue_name              | rabbit@xx-2    | 1        |

但是当我运行“get”命令来显示其内容时,rabbitmq 告诉我“没有项目”

所以,我用这个命令查询它:

$ rabbitmqadmin list queues name node messages messages_ready messages_unacknowledged

+----------------------------+----------------+----------+----------------+-------------------------+
|            name            |      node      | messages | messages_ready | messages_unacknowledged |
+----------------------------+----------------+----------+----------------+-------------------------+
| my_queue_name              | rabbit@xxxxx-2 | 1        | 0              | 1                       |
+----------------------------+----------------+----------+----------------+-------------------------+

我不知道为什么。只需重新启动rabbitmq服务器,一切似乎都很顺利。

关于java - pythonrabbitmqadmin listqueues命令虽然存在消息但无法获取消息内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45693508/

相关文章:

java - Spring AMQP - 使用带 TTL 的死信机制进行消息重新排队

java - 二进制 XML 文件 - 膨胀类 fragment 时出错

java - 打开Android App按钮不会返回到当前已打开的Activity

java - 除了使用 "new"关键字之外,还有另一种在 java 中创建对象的方法吗?

RabbitMQ 死信交换/队列

node.js - 如何使用 node-amqp 获取队列中的消息数

rabbitmq - 如何根据条件限制并发消息消耗

java - 插入语句在java中不起作用

java - Spring RabbitListener 在发送消息后调用一个方法

java - RabbitListener 不会接收使用 AsyncRabbitTemplate 发送的每条消息