我已经开发了一个连接到Neo4j并创建一组节点的应用程序。我还使用Graphaware为Neo4j开发了一个插件。这两个都在单独的dockers中运行(一个用于代码,另一个用于带插件的Neo4j )。
现在,由于我同时自动启动了这些容器,因此代码应该等待Neo4j完全启动,然后再尝试创建节点。为此,我尝试使用螺栓协议( Neo4j的驱动程序)连接到Neo4j,以测试其可用性。
我遇到的问题是,Neo4j似乎在完全加载插件之前就开始接受传入的连接。结果,在Neo4j真正准备好之前就建立了连接,也出现了一些问题(我不知道是什么),整个代码暂停(我不认为这个问题很重要),所有这些都是因为在加载插件之前建立了连接。我知道,因为如果我手动延迟连接,一切都会顺利进行。
所以我的问题是,在开始连接Neo4j之前,如何确保它已经(完全)预热?现在我正在检查管理(http://localhost:7474)的可用性,但是如果一开始没有管理怎么办?
发布于 2017-07-27 04:54:58
目前,您会发现可以将管理界面保留在本地,但实际上不能将其关闭(除非您在嵌入式模式下工作),因此等待http://localhost:7474是一个很好的方法。如果您想要更细粒度,可以查看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
希望这能有所帮助。
问候你,汤姆
https://stackoverflow.com/questions/45341291
复制