我一直在與DRb一起玩,用作我的解決方案來跨多個進程進行通信。我使用stardard進程:創建一個服務,將其註冊到druby uri,在另一個進程上創建一個引用該URI的DRbObject。到現在爲止還挺好。比方說,我殺了第一個進程。對遠程對象的每個後續方法調用都將以ECONNRefused異常爲終點。這只是公平的。但是沒有辦法查看DRbObject是否確實註冊在給定的URI中?我想通過強制每個實例的ECONNRefused來檢測它是否存在有點愚蠢。DRb:如何檢查遠程對象是否存在?
當然,其他涉及DRb以外的資源的解決方案總是受歡迎的,只要它們確實代表了一個優點。
消息隊列並不是解決我所遇到的小問題的方案,它最適合使用DRb。我想通過流程共享對象,但不能完全傳遞消息,我可以通過多種方式傳遞MQ。 – ChuckE 2013-04-17 14:33:01
不要低估ZeroMQ名字中Zero的威力。一探究竟。我有這樣的感覺,你認爲管理一個消息隊列繁瑣的服務器進程_a la_ RabbitMQ。 ZMQ是嵌入在Ruby腳本中的一個小型庫。非常像DRb,但沒有連接管理的麻煩。我曾經愛過DRB,特別是Rinda,但現在我發現了ZMQ,我懷疑我會再次接受DRb的壓力連接問題。 – 2013-04-17 17:23:35