disque可以处理RPC吗?

Can disque handle RPC?

我已经在 npm 上实现了一个 disqueue-node 的 RPC。我担心的是我已经使用 3 个 tcp 连接来实现请求、响应和回复队列。由于 get jobs 等到它获得 jobs 然后挂断其余的命令。您认为使用 1 个 tcp 连接可以实现吗?

如果您想在同一连接的上下文中同时使用 GETJOB 和 ADDJOB,您可能需要使用短超时或 GETJOB 的 NOHANG 选项以避免在没有要获取的消息时阻塞,并时不时重试。

请注意,空闲时的 TCP 连接大多是免费的,因此如果您还没有连接可扩展性问题,我不会为此争论太多。此外,考虑到 Disque 的分布式特性,如果您需要的话,您将来可以非常轻松地将连接分发到多个节点。

顺便说一句,如果你有一个非常简单的 RCP 协议:请求、响应,阻塞应该没有问题,比如:

    ADDJOB ... your RCP request
    reply = GETJOB ...

您仍然需要一个合理的 GETJOB 超时时间来通知调用者 及时收到回复有问题。也许值得 return 原始作业 ID 给调用者,以便它可以决定等待更多的回复 (如果 RCP 重试或类似的成本不低)。