当前位置: 首页 > 知识库问答 >
问题:

如何为RabbitMQ设置每个队列的内存限制?

束新
2023-03-14

>

  • 应用程序A在Q1中发布消息。

    应用程序B使用来自Q1的消息,进行一些处理,并在Q2中发布其他消息。B仅在Q2中成功发布消息后才对来自Q1的消息进行ACK。

    应用程序C使用来自Q2的消息,进行一些处理,并将一些内容写入数据库。

    如果我能限制每个队列的内存和磁盘使用量,而不是限制整个RabbitMQ的内存和磁盘使用量,我想这是可以解决的。有没有办法做到这一点,或者另一种方法来解决我的问题?

    如果需要,我可以切换到支持类似内容的另一个消息代理。

  • 共有1个答案

    孙修德
    2023-03-14

    不,设置每队列磁盘或内存限制不是RabbitMQ中可以做的(至少现在是这样)。

    如果消息不能丢失并且是关键任务,那么使应用程序B以与A相同的速度或更快的速度消费,例如通过增加消费者的数量,可能是解决方案。

    另一种方法是通过每个队列消息TTL或队列长度限制丢弃额外的消息。

     类似资料:
    • chrome调用了OOM-Killer:gfp_mask=0xd0,order=0,oom_score_adj=300 我在使用无头chrome浏览器+Selenium进行测试时得到了上面的错误。

    • 问题内容: 根据我对Rabbit-mq的(有限的)经验,如果您为尚不存在的队列创建新的侦听器,则会自动创建该队列。我试图将Spring AMQP项目与rabbit- mq一起使用来设置侦听器,但是却出现错误。这是我的xml配置: 我在RabbitMq日志中得到了这个: 还有来自AMQP的类似错误: 从堆栈跟踪中可以看出,队列是在“被动”模式下创建的-任何人都可以指出我如何不使用被动模式来创建队列,

    • 问题内容: 关闭。 这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 7年前关闭。 如何在文件中设置内存限制。我尝试了。但是在重启MYSQL服务器时显示错误。任何人都可以帮助… my.cnf 问题答案: 没有像 MySQL 文件中这样的变量。您只能从MySQL服务器系统变量中添加变量。阅读本文Mysql如何使用内存 这取决于您的My

    • 问题内容: 我的ActiveMQ服务器中目前有一个名为的队列。每当消息处理失败时,ActiveMQ都会创建一个默认目录。是否可以将该名称更改为类似的名称?原因是将来我可能会有几个队列,而我希望它像 问题答案: 您要查找的东西称为,在此过程中,ActiveMQ为每个队列/主题创建特定的DLQ, 您可以按如下,通过调整你实现它有点 此配置将创建名称为的DLQ ,如果您不需要前缀,则可以删除属性。 希望

    • 我有一个RabbitMQ代理,它设置了多个队列。在客户端(Java ),我有多个消费者,他们都像这样监听他们的队列: 队列_1- 它们都使用一个连接但不同的通道。发生的情况是,当我加载所有队列并启动应用程序代理服务时,首先服务一个队列,而不是另一个队列,依此类推。因此,消息一次由各自的消费者一个队列接收。我还想提一下,我正在使用预取计数1来实现消费者流量的公平分配。 我怎样才能让它发生,让所有的队

    • 我有一个spring jms应用程序,目前使用ibm mq server进行队列管理。我们计划将中间件改为rabbitmq,以获得更好的性能并有效地控制它,但希望保持spring jms代码的原样。我遵循了以下链接中提到的所有步骤。https://www.rabbitmq.com/jms-client.html