如何在15个以上的进程中仅使用2个代理连接?

时间:2013-11-29 07:21:11

标签: php rabbitmq

场景是 - 我正在使用RabbitMQ和phpamqplib构建消息队列模型。该模型将具有15个程序,每个程序将使用来自队列的消息并将消息发布到另一个队列。所有这些队列都不同(即大约30个队列)。但我想在所有这些程序中只使用2个连接,一个用于发布,另一个用于消费。我不想在每个程序中创建代理连接。我无法理解怎么做?有帮助吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果你想使用2个连接,那么15个生产者和消费者应该是单个进程的一部分并作为线程运行。另外两个线程用于消费,另一个用于发布。

使用者线程使用消息并将它们推送到剩余的工作线程池。

一旦工作线程完成了他们的工作,响应将被推送到发布者内部的内部存储,然后将响应弹出到兔子队列。

。要记住的几点是:

  1. 吞吐量:消费者和生产者的数量取决于您希望为您的应用程序实现的吞吐量。
  2. 可扩展性,如果您拥有固定数量的消费者和生产者,那么您可以将应用程序扩展到限制。
  3. 流量控制:消费者数量对于避免基于连接的流量控制至关重要。
  4. 消费者线程(Qos)的内部消息缓存。根据需要设置一个定义良好的QO值。
  5. 还要探索您希望使用的amqp库是否支持多线程。如果是,则可以跨线程共享连接。