2017-07-27 5 views
0

J'ai développé une application qui se connecte à Neo4j et crée un tas de nœuds. J'ai également développé un plugin pour Neo4j en utilisant Graphaware. Et les deux sont exécutés dans des dockers séparés (un pour le code et un pour le Neo4j avec le plugin).Comment savoir quand Neo4j est prêt à servir

Maintenant, puisque je démarre ces conteneurs automatiquement et simultanément, le code devrait attendre que le Neo4j démarre complètement avant d'essayer de créer les nœuds. Pour cela, je teste la disponibilité du Neo4j en essayant de me connecter à l'aide du protocole bolt (driver de Neo4j). Le problème que j'ai, c'est qu'il semble que Neo4j commence à accepter les connexions entrantes avant de charger complètement les plugins. Comme résultat, la connexion est faite avant que Neo4j soit réellement préparé et aussi quelque chose ne va pas (je ne sais pas quoi) et tout le code s'arrête (je ne pense pas que ce problème soit important) parce que la connexion est faite avant le les plugins sont chargés. Je sais que puisque si je retarde la connexion manuellement, tout va de l'avant en douceur.

Donc, ma question est de savoir comment s'assurer que Neo4j est chauffé (complètement) avant de commencer à s'y connecter? En ce moment, je vérifie la disponibilité de la gestion (http://localhost:7474) mais s'il n'y a pas de gestion, pour commencer?

Répondre

0

Pour l'instant, vous pouvez conserver l'interface de gestion locale, mais vous ne pouvez pas la désactiver (à moins que vous ne travailliez en mode intégré), donc attendre http://localhost:7474 est une bonne approche. Si vous voulez être plus fine, vous pouvez vérifier yourinstallation \ 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 

Hope this helps.

Cordialement, Tom