Php 有可能在rabbitMq中表示这样的过程吗?

Php 有可能在rabbitMq中表示这样的过程吗?,php,architecture,rabbitmq,Php,Architecture,Rabbitmq,我的web应用程序中有一个长时间运行的过程(Excel报表创建),需要在后台执行 有关应用程序和环境的一些详细信息 该应用程序由许多实例组成,其中每个客户端都有一个单独的实例(具有定制的业务逻辑),而所有内容都托管在我们的服务器上。生成Excel的功能与此相同 我计划安装一台rabbitMq服务器。应用程序(Publisher)的一部分将从用户处获取所有报告选项,并将其放入消息中。一些后台工作(消费者)会使用它,生成报告并通过电子邮件发送 然而,这种设计存在一个缺陷,比如说,来自一个实例的用户

我的web应用程序中有一个长时间运行的过程(Excel报表创建),需要在后台执行

有关应用程序和环境的一些详细信息

该应用程序由许多实例组成,其中每个客户端都有一个单独的实例(具有定制的业务逻辑),而所有内容都托管在我们的服务器上。生成Excel的功能与此相同


我计划安装一台rabbitMq服务器。应用程序(Publisher)的一部分将从用户处获取所有报告选项,并将其放入消息中。一些后台工作(消费者)会使用它,生成报告并通过电子邮件发送

然而,这种设计存在一个缺陷,比如说,来自一个实例的用户将排队等待大量复杂的报告(大约10分钟的工作),而来自另一个实例的用户将排队等待一个简单的报告(1-2分钟),他将不得不等到其他人完成

每个应用程序实例可能有单独的队列,但在这种情况下,我需要为每个实例创建一个消费者。鉴于atm有100多个实例,这看起来不是一个可行的方法

我在想,是否有可能使用一个脚本来检查所有可用队列(和消费者),并为没有队列的队列创建一个新的消费者。对于消费者和此类脚本的语言没有限制

这听起来是可行的方法吗?如果没有,请给出建议


谢谢

因为我正确理解了主题,所有内容都在一台服务器上—RabbitMQ、web应用程序、每个客户端的不同实例以及messeges的消费者。在这种情况下,我宁愿在每条消息()中放置不同的主题,并介绍消费者优先级()。基于该选项,在发布消息期间,我将创建主题和消息优先级的组合-发布者将知道每个客户端已发送报告的数量,选择的选项,并将决定是高优先级、低优先级还是正常优先级。 基于该数据拉取消息的逻辑将在消费者中,这样消费者就不会在已经有进程3的情况下收到沉重的主题(示例)

根据队列中的消息总数(并非100%)以及之前的主题和优先级,您可以实施某种泄漏桶策略,以获得资源控制权—最多可同时生成100个报告


您可以考虑使用ZrOMQ(),它可能更适合RabByMQ,因为它更简单,而且它的代理更少。

当我正确地理解您的问题时,您不需要从实例B(Load Realts)中的用户来等待实例A(重报告)的用户生成报告。关键是每个实例都有单独的队列,并且有一个脚本可以为还没有使用者的队列创建使用者。我的印象是所有内容都将位于一台服务器上?@gskillz正确。谢谢您的建议。我会调查的。假设主题将消息路由到不同的队列,则每个队列需要单独的使用者(至少一个)。从一个脚本为每个队列生成消费者在技术上是否可行?或者这是一种有缺陷的方法?对我来说,这是一种有缺陷的方法-我宁愿和多个消费者、负载平衡器、优先级呆在一起,并将其留给发布者/订阅者模式。谢谢。我会试一试的。