【问题标题】:Timeout / # Pending Requests in ZMQ REQ/REP PatternTimeout / # ZMQ REQ/REP 模式中的待处理请求
【发布时间】:2014-01-16 08:01:20
【问题描述】:

我正在考虑开始在我的 SOA 环境中使用 ZMQ REQ/REP 而不是直接使用 HTTP。但我对为此目的使用 MQ 还很陌生,所以我有几个问题。

第一季度。使用 HTTP 时,如果服务器 A 无法与服务器 B 通信,我可以设置一个简单的超时并发出警报。根据我目前对 ZMQ 的理解,ZMQ 只会让服务器 A 等待服务器 B 重新连接,而我不会知道有问题。我该如何解决这个问题?

第二季度。我如何全面了解当前有多少请求正在等待/排队,并可能出于调查目的获取列表?

最大

【问题讨论】:

    标签: message-queue soa zeromq


    【解决方案1】:

    第一季度。使用 HTTP 时,我可以设置一个简单的超时并在以下情况下发出警报 服务器 A 无法与服务器 B 对话。根据我目前的理解 对于 ZMQ,ZMQ 将简单地让服务器 A 等待服务器 B 重新连接 我不会知道有问题。我该如何解决这个问题?

    不要使用 REQ/REP;分别在客户端和服务器上使用 DEALER 和 ROUTER;它们更加通用、异步,并且不会像 rep/req 那样阻塞。

    对于超时,您可以显式设置一个,或者使用轮询器,这是一个更好的选择,因为它提供了更大的灵活性,请参阅this

    如何全面了解当前有多少请求 待处理/排队,并可能获取列表进行调查 目的?

    我不相信这是可能的,至少在 3.x 中是不可能的。一般来说,这些细节都是由 zmq 抽象出来的。

    【讨论】:

    • 谢谢。对于 Q2,如果这不可能,那么我如何知道是否存在大量请求填满的瓶颈,以及我如何知道整个队列是否被清除/刷新?
    • Zeromq 套接字具有接收和发送缓冲区,具体取决于类型(有些两者都有)。如果套接字缓冲区超过高水位标记(HWM),它将丢弃或阻止其他消息(阅读此api.zeromq.org/3-2:zmq-socket),再次取决于套接字类型。您必须进行测试和测量以找到瓶颈,并相应地调整 HWM。此外,没有“冲洗”;要清除缓冲区中的消息,必须关闭套接字。阅读常见问题解答,其中许多问题都已解决,希望对您有所帮助! zeromq.org/area:faq
    猜你喜欢
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 2014-03-05
    • 2017-10-08
    • 1970-01-01
    相关资源
    最近更新 更多