RabbitMQ:正在从发布服务器检查队列大小

RabbitMQ:正在从发布服务器检查队列大小,rabbitmq,message-queue,amqp,Rabbitmq,Message Queue,Amqp,当我在rabbitmq文档中看到非常大的队列大小会对队列性能产生负面影响时,我感到惊讶。我有一个job dispatcher,它可以将30k+消息排队等待作业使用者使用,并且发现即使在增加使用者数量之后,性能也很差。然后,我从发布端编写代码来检查队列的大小,如果队列太大,请休眠一段时间,直到队列变小 我发现这是为了提高性能,但我怀疑这背后的逻辑。出版商必须知道排队系统的细节,以至于必须对自己进行评级限制,这似乎有点让人感到难受,这有点打破了抽象,不是吗?这对所有消息队列系统都正常吗?是否有其他解

当我在rabbitmq文档中看到非常大的队列大小会对队列性能产生负面影响时,我感到惊讶。我有一个job dispatcher,它可以将30k+消息排队等待作业使用者使用,并且发现即使在增加使用者数量之后,性能也很差。然后,我从发布端编写代码来检查队列的大小,如果队列太大,请休眠一段时间,直到队列变小


我发现这是为了提高性能,但我怀疑这背后的逻辑。出版商必须知道排队系统的细节,以至于必须对自己进行评级限制,这似乎有点让人感到难受,这有点打破了抽象,不是吗?这对所有消息队列系统都正常吗?是否有其他解决方案,使用RabbitMQ或其他库?

您的发布者不必担心队列大小,这是正确的。但是,程序员应:

  • 确保集群有足够的硬件和/或水平规模来处理消息卷。30k消息对于单个代理机器来说应该不是一件困难的事情,假设它们的大小合适

  • 确保您的邮件大小不超过100kb。如果它们包含大型二进制对象,您将希望将这些对象保存到数据存储中,并且只在消息中发布指向这些资源的指针

  • RabbitMQ具有流控制功能,可以处理过于热心的发布者。我不确定你的设置是什么,但是你可以调整它们来调用它。阅读更多:


  • 请记住,理想的作业队列大小为零,因此您的系统应设计为使队列长度尽可能小。这意味着处理消息的速度与生成消息的速度大致相同

    您的发布者不必担心队列大小,这是正确的。但是,程序员应:

  • 确保集群有足够的硬件和/或水平规模来处理消息卷。30k消息对于单个代理机器来说应该不是一件困难的事情,假设它们的大小合适

  • 确保您的邮件大小不超过100kb。如果它们包含大型二进制对象,您将希望将这些对象保存到数据存储中,并且只在消息中发布指向这些资源的指针

  • RabbitMQ具有流控制功能,可以处理过于热心的发布者。我不确定你的设置是什么,但是你可以调整它们来调用它。阅读更多:

  • 请记住,理想的作业队列大小为零,因此您的系统应设计为使队列长度尽可能小。这意味着处理消息的速度与生成消息的速度大致相同