gpt4 book ai didi

zeromq - 如何在 ZeroMQ 中监控/管理队列?

转载 作者:行者123 更新时间:2023-12-01 22:19:27 26 4
gpt4 key购买 nike

首先,我是 ZeroMQ 和消息队列系统的新手,所以我想要做的事情可能可以通过不同的方法来解决。我正在设计一个消息系统,它执行以下操作:

  • 多个客户端连接到代理并发送需要处理的项目的 ID。客户端立即断开连接,不等待响应。

  • 代理将项目发送给工作人员(每个工作人员一个项目)以执行某些处理。每次返回都会返回一个处理完成的信号。

我有一个基本的系统设置,可以正确处理请求/回复,但我还希望能够执行以下操作:

  • 查询代理以查看有多少进程实际在工作线程上运行以及有多少进程只是在等待运行。

  • 让代理确保每个 id 仅运行一个进程 - 如果重复的 id 到达且该项目当前未由工作程序处理,请勿将其添加到队列中。

我正在使用带有经纪人/经销商套接字的轮询设置。我使用的代码与 this example from Ian Barber 非常相似.

我的第一个倾向(尽管我不确定如何在 zmq 中实现它)是让代理跟踪已收到的 id,以及工作人员正在积极处理的 id。代理似乎会立即将请求转发给工作人员,无论他们是否可以实际运行处理。然后,worker 将这些 id 排队并按顺序处理它们。这并不理想,因为我希望能够集中监视和控制系统中发生的情况以实现可靠性。

无论如何,任何此类设置的提示、技巧或示例将不胜感激。

最佳答案

在我看来,ZeroMQ 最适合用于无代理设计,该库就是为此设计的。如果您想监视队列中的项目数量、吞吐量或其他任何内容,您必须自己将其构建到应用程序/设备/生产者中。由于您是消息传递新手,因此这可能很快就会失控。鉴于此,我建议研究 RabbitMQ(或类似的代理),它可以为您提供开箱即用的这些服务。如果您确实采用 RabbitMQ(或更确切地说,AMQP),我建议对您上面描述的场景使用扇出交换。

关于zeromq - 如何在 ZeroMQ 中监控/管理队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10677493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com