0

嗨,我正在寻找关于 rabbit mq 的简单解决方案。以下是对兔子进行的设置。

  1. 启动兔子服务器
  2. 使用持久选项创建主题类型的交换(myexchange)。
  3. 创建队列 (myqueue) 并使用持久选项并将 x-max-length-bytes 设置为 4 并将 x-max-length 设置为 2。
  4. 将 myexchange 与 myrouting 绑定到 myqueue。
  5. 使用 aqmp 通道使用 basic_publish 发布消息 (channel.basicPublish(myexchange, myrouting, true, null, "test".getBytes("UTF-8"));
  6. 使用发布者确认设置,如 channel.confirmSelect(); 和 channel.waitForConfirmsOrDie();

下面的代码片段

channel = connectionFactory.getChannel();
channel.queueDeclarePassive("myqueue");
channel.confirmSelect();
channel.basicPublish("myexchange", "myrouting", true, 
        null, "test".getBytes("UTF-8"));
channel.waitForConfirmsOrDie();

现在,rabbit mq 没有回复超出消息数量/超出大小的错误。我可以发送 1000 条消息/大小为 1kb,并且消费者也可以使用所有这些消息。那么我怎么能得到错误代码呢?请问有什么帮助吗?

4

1 回答 1

0

RabbitMQ 团队会监控这个邮件列表,有时只会在 StackOverflow 上回答问题。


这里有两个项目你需要考虑。首先,您的消费者可能会以足够快的速度消费消息,以至于永远不会达到限制。

其次,当达到队列长度限制时,消息会从队列头部丢弃,以便为新消息腾出空间。这意味着您将丢失队列中最旧的消息-文档。此行为将可在3.7.0.

但是,在任何情况下都不会返回错误,所以我不知道您为什么认为会返回错误。文档清楚地说明了达到队列限制时会发生什么。

于 2017-11-10T16:48:42.187 回答