rabbitmq Rabbit MQ阻塞调用发送消息,并确保它为超过消息限制或超过消息大小限制提供正确的回复代码

mcvgt66p  于 2023-10-20  发布在  RabbitMQ
关注(0)|答案(1)|浏览(125)

你好,我正在寻找简单的解决方案,兔子MQ。下面是在兔子身上做的设置。
1.启动Rabbit服务器
1.创建带有持久选项的主题类型的Exchange(myExchange)。
1.使用durable选项创建队列(myqueue),x-max-length-bytes设置为4,x-max-length设置为2。
1.将带有myrouting的myexchange绑定到myqueue。
1.发布消息使用basic_publish使用aqmp通道(channel.basicPublish(myexchange,myrouting,true,null,“test”. getName(“UTF-8”));
1.使用发布者确认设置,如channel.confirmSelect(); public String getString();
以下代码片段

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

现在兔子mq没有回复超过邮件数量/大小的错误。我可以发送1000条消息/1 kb大小,消费者也可以使用所有这些消息。那么我如何才能得到错误代码呢?有没有人帮忙?

vsdwdz23

vsdwdz231#

这里有两件事你需要考虑。首先,您的消费者可能会以足够快的速度消费消息,以至于永远不会达到限制。
其次,当达到队列长度限制时,将从队列的头部删除消息,以便为新消息腾出空间。这意味着您将丢失队列中最早的消息-docs。此行为在3.7.0中是可配置的。
但是,在任何情况下都不会返回错误,所以我不知道为什么你认为会返回错误。文档清楚地说明了达到队列限制时会发生什么。

相关问题