DRb: как проверить, существует ли удаленный объект?
Я играл с DRb, чтобы использовать его в качестве решения для взаимодействия между несколькими процессами. Я использую стандартный процесс: один создает сервис, регистрирует его в druby uri, а в другом процессе создается DRbObject, ссылающийся на этот URI. Все идет нормально. Допустим, я убил первый процесс. Каждый последующий вызов метода для удаленного объекта завершается исключением ECONNRefused. Что справедливо. Но нет ли способа проверить, действительно ли DRbObject зарегистрирован в данном URI? Я думаю, что тестирование путем принудительного использования ECONNRefused на каждом экземпляре, чтобы увидеть, существует ли он, немного глупо.
Конечно, всегда приветствуются другие решения с участием ресурсов, отличных от DRb, если они действительно представляют собой плюс.
2 ответа
Вы должны проверить ZeroMQ. Его несколько сложнее настроить, чем DRb, но он решает все проблемы присутствия / переподключения в основном прозрачно.
Возможно, это не то, что вы ищете, но я разработал инфраструктуру IPC поверх DRb, которая скрывает все элементы DRb от уровня приложений. Это включает в себя клиентские методы для поиска служб, зарегистрированных на сервере в сети. Наверное, слишком много для тебя, но, может быть, стоит в нем ковыряться. В любом случае, вы можете проверить это на Github.