可以disque处理RPC吗?

时间:2015-07-21 09:53:18

标签: disque

我已经实现了一个RPC,它是npm上的disqueue-node。我担心的是,我已经使用3个tcp连接来实现这一点,用于请求,响应和replyQueue。因为get job等到它获得作业然后挂起其余的命令。你认为使用1 tcp连接可以实现吗?

1 个答案:

答案 0 :(得分:0)

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

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

如果您有一个非常简单的RCP协议:请求,响应,阻塞应该没有问题,例如:

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

您仍然需要合理的GETJOB超时才能通知来电者 重新收到回复的问题。也许值得回归  原始作业ID给调用者,以便它可以决定等待更多的回复 (如果RCP重试或类似的不便宜)。