Microservices Lagom服务如何使用其他服务?

Microservices Lagom服务如何使用其他服务?,microservices,service-discovery,lagom,Microservices,Service Discovery,Lagom,我不能在三种情况下思考 Lagom服务使用同一集群中的另一个Lagom服务 Lagom服务使用不同集群中的另一个Lagom服务 Lagom服务使用外部非Lagom服务 外部非Lagom服务使用Lagom服务 1。Lagom服务使用同一集群中的另一个Lagom服务 对于这种情况,方法是ServiceAImpl依赖于ServiceB API,该API绑定到将注入ServiceAImpl的具体实现 与该IP的合同是什么?背后应该是什么 4。外部非Lagom服务使用Lagom服务 我必须使用unti

我不能在三种情况下思考

  • Lagom服务使用同一集群中的另一个Lagom服务
  • Lagom服务使用不同集群中的另一个Lagom服务
  • Lagom服务使用外部非Lagom服务
  • 外部非Lagom服务使用Lagom服务
  • 1。Lagom服务使用同一集群中的另一个Lagom服务

    对于这种情况,方法是ServiceAImpl依赖于ServiceB API,该API绑定到将注入ServiceAImpl的具体实现

    与该IP的合同是什么?背后应该是什么

    4。外部非Lagom服务使用Lagom服务

    我必须使用until-Lagom来支持?

    当Lagom谈到“集群”时,它指的是Akka集群。每个服务可以部署为Akka集群,也就是说,一个服务可以是一个节点集群。因此,集群中没有多个服务,只有一个集群服务


    Lagom服务以一种相当直接的方式将map向下调用为惯用REST。因此,当与外部服务交谈时,该IP上的内容应该是REST服务。同样,当外部服务与Lagom对话时,它应该使用REST。

    感谢您的回答@James。在第(1)点的情况下,HelloService是否与MyServiceImpl运行在同一个集群中?我发现您的问题非常令人困惑……我同意许多高级Lagom文档讨论解耦服务,而部署传递了1集群的简单性。。。。
    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);
        }
    }
    
    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
          );
        };
      }
    }
    
     lagomUnmanagedServices in ThisBuild := Map("weather" -> "http://localhost:3333")