Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
服务链-Java_Java_Rest_Sockets_Invocation - Fatal编程技术网

服务链-Java

服务链-Java,java,rest,sockets,invocation,Java,Rest,Sockets,Invocation,目前,我正在使用多个REST服务来处理我的数据。 工作流如下所示: 用户请求汽车的速度: 询问SpeedService最新速度=>SpeedService从PositionService请求车辆的最新位置,PositionService通过调用DatabaseService从车辆获取原始未处理数据来实现此目的。然而,我遇到的问题是用另一个服务调用一个服务。我现在已经通过使用调用api实现了这一点 例如: Client client = ClientBuilder.newClient();

目前,我正在使用多个REST服务来处理我的数据。 工作流如下所示:

用户请求汽车的速度: 询问SpeedService最新速度=>SpeedService从PositionService请求车辆的最新位置,PositionService通过调用DatabaseService从车辆获取原始未处理数据来实现此目的。然而,我遇到的问题是用另一个服务调用一个服务。我现在已经通过使用调用api实现了这一点

例如:

Client client = ClientBuilder.newClient();
        WebTarget target = client.target("http://mylocalRestserver.example/webresources/").path("speed");
        target = target.queryParam("carId", carId);
        Invocation invocation = target.request(MediaType.APPLICATION_JSON).buildGet();
        Speed speed = new Genson().deserialize(invocation.invoke(String.class), Speed.class);
        return speed;

然而,每当我尝试模拟并发用户(运行多个curl查询)时,REST服务都会因为SocketTimeout而中断,我假设是因为在同一个serversocket上发送了多个请求?有什么方法可以实现这种“服务链”吗?

你的想法很好,但不能用这种幼稚的方法来实现

您试图实现的是位置透明性,同时保持系统的响应性,这不是一项容易的任务

AKKA想到,有很多大的框架可以解决这个问题

如果您的目标只是分离关注点(每个服务处理的都是问题的一部分,并调用其他服务来获得它所需要的),那么您可以只使用相关的类,而无需从服务器向自身发出http请求

相反,如果您希望能够跨多个节点分发服务,您应该依赖于akka之类的框架,那么自己完成这项任务是不可行的