我已经实现了一个RPC,它是npm上的解队列节点。我担心的是,我已经使用3个tcp连接实现了请求、响应和replyQueue。在获取作业的原因是,等待直到得到作业,然后挂断其余的命令。你认为它可以通过1 tcp连接实现吗?
发布于 2015-07-21 13:51:46
如果您希望在同一个连接的上下文中同时使用GETJOB和ADDJOB,则可能希望使用GETJOB的短超时或NOHANG选项,以避免在没有要获取的消息时阻塞,并不时重试。
请注意,在空闲时,TCP连接大多是免费的,因此如果您还没有连接可伸缩性问题,那么我不会对此进行过多的斗争。此外,考虑到Disque的分布式特性,您可以在将来非常容易地将连接分配到多个节点,如果您需要的话。
顺便说一句,在这种情况下,您有一个非常琐碎的RCP协议:请求、响应,在阻塞方面应该没有问题,如:
ADDJOB ... your RCP request
reply = GETJOB ...您仍然需要一个合理的GETJOB超时时间,以便通知调用方,re是一个及时收到回复的问题。也许将原始的作业ID返回给调用者是值得的,这样它就可以决定等待更多的回复(如果RCP是不便宜的重试或类似的)。
https://stackoverflow.com/questions/31535771
复制相似问题