Ind*_*ngh 1 java neo4j graph-databases
我有一个用例,我需要在neo4j中的并行线程中运行我的存储过程.我编写了存储过程并将其包含在neo4j插件中.但是当我运行存储过程时,我得到以下错误:
2016-06-24 05:45:54.683+0000 INFO Remote interface available at http://localhost:7474/
java.lang.UnsupportedOperationException: Creating new transactions and/or spawning threads are not supported operations in store procedures.
at org.neo4j.kernel.impl.proc.ProcedureGDBFacadeSPI.assertSameThread(ProcedureGDBFacadeSPI.java:108)
at org.neo4j.kernel.impl.proc.ProcedureGDBFacadeSPI.isInOpenTransaction(ProcedureGDBFacadeSPI.java:124)
at org.neo4j.kernel.impl.factory.GraphDatabaseFacade.beginTransaction(GraphDatabaseFacade.java:335)
at org.neo4j.kernel.impl.factory.GraphDatabaseFacade.beginTx(GraphDatabaseFacade.java:330)
at example.SearchTask.call(SearchTask.java:33)
at example.SearchTask.call(SearchTask.java:17)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
我已经明白,在neo4j中自定义存储过程无法在并行线程中运行.
但我在寻找有什么方法可以并行运行它.
使用时
@Context
GraphDatabaseService graphDb
Run Code Online (Sandbox Code Playgroud)
您将获得一个不允许显式事务/线程管理的包装GDS.如果您需要在过程中执行此操作,则必须使用非公共API,如下所示:
@Context
GraphDatabaseAPI graphDb
Run Code Online (Sandbox Code Playgroud)
这个没有包裹,因此允许你做所有讨厌的事情.有关实际示例,请参阅https://github.com/neo4j-contrib/neo4j-apoc-procedures/blob/master/src/main/java/apoc/periodic/Periodic.java#L26
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |