我想不出三种情况。
1. Lagom服务在同一个集群中使用另一个Lagom服务。
对于这种情况,方法是ServiceAImpl依赖于ServiceB API,该API绑定到将注入到ServiceAImpl的具体实现。
ServiceB绑定:
import com.google.inject.AbstractModule;
import com.lightbend.lagom.javadsl.server.ServiceGuiceSupport;
import docs.services.HelloService;
public class Module extends AbstractModule implements ServiceGuiceSupport {
protected void configure() {
bindClient(HelloService.class);
}
}ServiceA实现:
public class MyServiceImpl implements MyService {
private final HelloService helloService;
@Inject
public MyServiceImpl(HelloService helloService) {
this.helloService = helloService;
}
@Override
public ServiceCall<NotUsed, NotUsed, String> sayHelloLagom() {
return (id, msg) -> {
CompletionStage<String> response = helloService.sayHello().invoke("Lagom");
return response.thenApply(answer ->
"Hello service said: " + answer
);
};
}
}如果我正确理解它,为了以这种方式使用服务API,两个客户端必须位于同一个集群中。然而,拉格姆他说认为
群集只应跨越运行相同服务的节点。
在本例中,我们有两种不同类型的服务。
2. Lagom服务在不同的集群中使用另一个Lagom服务。
文档他说
注意,如果您想要与之通信的服务实际上是一个拉格姆服务,您可能希望阅读与外部拉格姆项目的集成的文档。
为什么只将依赖项配置到服务API,而不配置外部Lagom服务的IP和端口?
3. Lagom服务消耗外部非拉格姆服务。
您必须做的第一件事是在service中注册每个外部服务。假设我们想要注册一个在http://localhost:3333上运行的外部服务,下面是我们要添加到构建中的内容: lagomUnmanagedServices in ThisBuild := Map(“ThisBuild”->“http://localhost:3333"”)
那个IP的合同是什么?它的背后应该是什么?
4.外部非Lagom服务使用Lagom服务。
我必须使用第三方登记模式,直到Lagom支持自配准模式
发布于 2016-05-06 07:27:51
当拉格姆谈到“星团”时,它指的是阿克卡星团。每个服务可以部署为一个Akka集群,也就是说,一个服务可以是一个节点集群。所以,集群中没有多个服务,只有一个集群服务。
Lagom服务调用以相当直接的方式向下映射到惯用的REST。因此,当与外部服务交谈时,IP上的内容应该是REST服务。同样,当外部服务与Lagom交谈时,它应该使用REST。
https://stackoverflow.com/questions/36582126
复制相似问题