首先,我是ZeroMQ和消息队列系统的新手,所以我尝试做的事情可以通过不同的方法解决.我正在设计一个执行以下操作的消息传递系统:
多个客户端连接到代理并发送需要处理的项的ID.客户端立即断开连接,不等待响应.
经纪人向工人发送物品,每个工人一件物品,以执行一些处理.每个返回都返回一个处理完成的信号.
我有一个基本的系统设置正在处理请求/回复,但我也希望能够做到以下几点:
查询代理以查看工作程序上实际运行的进程数以及等待运行的进程数.
让代理确保每个id只有一个进程在运行 - 如果一个重复的id到达并且该项当前没有被worker处理,请不要将它添加到队列中.
我正在使用经纪人/经销商套接字进行民意调查.我正在使用的代码与Ian Barber的这个例子非常相似.
我的第一个倾向(虽然我不确定如何在zmq中实现它)是让经纪人跟踪已经收到的ID,以及那些正在被工人处理的ID.似乎经纪人立即向工人转发请求,无论他们是否可以实际运行处理.然后,工作人员排队ID并按顺序处理它们.这并不理想,因为我希望能够集中监视和控制系统中发生的事情以实现可靠性.
无论如何,这种类型的设置的任何提示,技巧或示例将不胜感激.
Sha*_*aun 16
在我看来,ZeroMQ最适用于无库经纪人的设计,而这些设计是为图书馆设计的.如果要监视队列中的项目数或吞吐量等,您将不得不自己构建应用程序/设备/生产者.由于您是消息传递的新手,因此可能会很快失控.鉴于此,我建议调查RabbitMQ(或类似的经纪人),它将为您提供开箱即用的服务.如果您采用RabbitMQ(或者更确切地说,AMQP),我建议您使用扇出交换来实现上述方案.
Zty*_*tyx 13
ZeroMQ的Python库似乎带有一个处理这个问题的模式:http://zeromq.github.com/pyzmq/devices.html#monitoredqueue
| 归档时间: |
|
| 查看次数: |
16574 次 |
| 最近记录: |