DRb:如何检查远程对象是否存在?

时间:2013-04-05 14:10:39

标签: ruby ipc drb

我一直在使用DRb作为我的解决方案来跨多个流程进行通信。我正在使用标准进程:一个创建服务,将其注册到druby uri,另一个进程创建一个引用该URI的DRbObject。到现在为止还挺好。假设我杀了第一个进程。对远程对象的每个后续方法调用都将以ECONNRefused异常结束。这是公平的。但是,有没有办法看看DRbObject是否确实在给定的URI中注册了?我认为通过在每个实例上强制执行ECONNRefused来测试它,看它是否存在有点傻。

当然,其他涉及DRb以外资源的解决方案总是受欢迎的,前提是它们确实代表了一个优势。

2 个答案:

答案 0 :(得分:0)

你应该看看ZeroMQ。设置比DRb稍微复杂一些,但它主要透明地处理所有存在/重新连接问题。

答案 1 :(得分:0)

这可能不是您想要的,但我已经在DRb上开发了一个IPC框架,它隐藏了应用程序级别的所有DRb内容。这包括客户端方法,以查找通过网络向服务器注册的任何服务。对你来说可能是太多的开销,但也许值得探讨一下。无论如何,你可以在Github上查看。