Как узнать, когда Neo4j готов служить

Я разработал приложение, которое подключается к Neo4j и создает несколько узлов. Я также разработал плагин для Neo4j с использованием Graphaware. И то, и другое работает в отдельных докерах (один для кода и один для Neo4j с плагином).

Теперь, поскольку я запускаю эти контейнеры автоматически и одновременно, код должен дождаться полного запуска Neo4j, прежде чем он попытается создать узлы. Для этого я проверяю доступность Neo4j, пытаясь подключиться к нему по протоколу болта (драйвер Neo4j).

У меня проблема в том, что Neo4j начинает принимать входящие соединения до того, как полностью загрузит плагины. В результате соединение устанавливается до того, как Neo4j будет фактически подготовлен, а также что-то пойдет не так (я не знаю, что), и весь код останавливается (я не думаю, что эта проблема важна), все потому, что соединение установлено до того, как плагины загружены. Я знаю, что, поскольку я задерживаю соединение вручную, все идет гладко.

Поэтому мой вопрос заключается в том, как убедиться, что Neo4j прогрелся (полностью) перед началом подключения к нему? Прямо сейчас я проверяю доступность управления ( http://localhost:7474/), но что, если нет управления, для начала?

1 ответ

На данный момент вы обнаружите, что вы можете сохранить интерфейс управления локальным, но на самом деле вы не можете его отключить (если вы не работаете во встроенном режиме), так что ожидание http://localhost:7474/ - это хороший подход, Если вы хотите быть более детальным, вы можете проверить вашу установку\logs\debug.log

2017-07-27 03:58:53.643+0000 INFO [o.n.k.AvailabilityGuard] Fulfilling of requirement makes database available: Database available
2017-07-27 03:58:53.644+0000 INFO [o.n.k.i.f.GraphDatabaseFacadeFactory] Database is now ready

Надеюсь это поможет.

С уважением, Том

Другие вопросы по тегам