Spring RestTemplate与Google应用程序引擎

Spring RestTemplate与Google应用程序引擎,spring,sockets,google-app-engine,spring-data-neo4j,resttemplate,Spring,Sockets,Google App Engine,Spring Data Neo4j,Resttemplate,我有一个带有Spring框架的GoogleAppEngine应用程序,它必须向另一个公开RESTAPI的Spring启动应用程序发出带有列表的post请求。 我正在使用RestTemplate调用api 在GAE应用程序中,我执行以下操作: restTemplate.postForObject(NEO4J_URL_VERTEX, vertices, List.class); Spring引导应用程序连接到本地Neo4j数据库。在NEO4J_URL_VERTEX中,我使用以下方法将顶点保存到数据

我有一个带有Spring框架的GoogleAppEngine应用程序,它必须向另一个公开RESTAPI的Spring启动应用程序发出带有列表的post请求。 我正在使用RestTemplate调用api

在GAE应用程序中,我执行以下操作:

restTemplate.postForObject(NEO4J_URL_VERTEX, vertices, List.class);
Spring引导应用程序连接到本地Neo4j数据库。在
NEO4J_URL_VERTEX
中,我使用以下方法将顶点保存到数据库中:

@Transactional
@RequestMapping(value = "vertex/all", method = RequestMethod.POST, consumes = "application/json")
public void addVertex(@RequestBody List<Vertex> vertices) {
        for (Vertex v : vertices) {
            Vertex old = vertexService.findByEmail(v.getEmail());
            if (old == null) {
                vertexService.create(v);
             }
        }
}
这里需要注意的重要一点是,顶点保存到Neo4j数据库。这没有问题。GAE应用程序使用对象列表发出post请求,但一段时间后(大约1秒)关闭套接字,因为显然这太长了。但是带有Neo4j的Spring应用程序继续写入顶点,最终它们都保存到数据库中

我已经尝试在GAE应用程序中迭代列表,并为每个顶点写一篇文章,但是如果顶点对象很大(即有许多队友),我会再次遇到相同的错误。 顶点对象定义为:

public class Vertex  {
    private Long id;
    private String name;
    @Index(unique=true)
    private String email;
    @Index(unique=true)
    private Long universeUserId;

    @Relationship(type="WORKS_WITH", direction = Relationship.OUTGOING)
    private  List<Edge> teammates;

//getters,setters
}
但这没有帮助。此外,来自GAE应用程序的发布顶点的方法是从Appengine的

任务队列

它有10分钟的时间限制,所以这不是问题。目前,这两个应用程序都在本地主机上运行。
非常感谢您的帮助

您正在创建多少个对象?我怀疑这不是spring数据问题。@MihaiRaulea 61顶点对象。这不是spring的数据问题,没错。我认为这是谷歌应用程序引擎的问题。如果我使用Postman或任何Rest客户机的顶点列表调用Spring Boot应用程序的post方法,那么在Neo4j db中保存数据不会有问题。实际上,即使我从GAE应用程序调用它,顶点也会被保存。但在GAE中我得到了那个错误,那个套接字连接被取消了。。。
public class Vertex  {
    private Long id;
    private String name;
    @Index(unique=true)
    private String email;
    @Index(unique=true)
    private Long universeUserId;

    @Relationship(type="WORKS_WITH", direction = Relationship.OUTGOING)
    private  List<Edge> teammates;

//getters,setters
}
RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory());
private ClientHttpRequestFactory clientHttpRequestFactory() {
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        factory.setReadTimeout(50000);
        factory.setConnectTimeout(50000);
        return factory;
    }