【发布时间】:2012-05-27 11:53:42
【问题描述】:
首先,我是 ZeroMQ 和消息队列系统的新手,所以我尝试做的事情可能会通过不同的方法来解决。我正在设计一个执行以下操作的消息传递系统:
多个客户端连接到代理并发送需要处理的项目的 ID。客户端立即断开连接,不等待响应。
代理将项目发送给工作人员,每个工作人员一个项目,以执行一些处理。每次返回都会返回一个处理完成的信号。
我有一个可以正确处理请求/回复的基本系统设置,但我还希望能够执行以下操作:
查询代理以查看工作线程上实际运行的进程数以及等待运行的进程数。
-
让代理确保每个 id 只有一个进程在运行 - 如果重复的 id 到达并且该项目当前没有被工作人员处理,请不要将其添加到队列中。
李>
我正在使用带有经纪人/经销商套接字的投票设置。我使用的代码与this example from Ian Barber 非常相似。
我的第一个想法(虽然我不确定如何在 zmq 中实现它)是让代理跟踪已收到的 ID,以及正在由工作人员积极处理的 ID。似乎代理会立即将请求转发给工作人员,无论它们是否可用于实际运行处理。然后工作人员将 id 排队并按顺序处理它们。这并不理想,因为我希望能够集中监控和控制系统中发生的事情以实现可靠性。
无论如何,对于此类设置的任何提示、提示或示例将不胜感激。
【问题讨论】:
-
只是想一想,zmq 是相当准系统/轻量级的,也许你应该看看像 activemq、rabbitmq 或 openmq 这样的产品,它们具有广泛的管理可能性。像 activemq 和 openmq 这样的产品非常以 java 为中心,但它们对许多编程语言都有非常好的功能绑定。
-
@fvu - 谢谢 - 我曾希望让 zmq 运行,但会检查其他一些库 - 特别是我认为 RabbitMQ 可能会工作。
标签: zeromq