Ich kann nicht in drei Fällen denken.Wie Lagom-Dienste andere Dienste verbrauchen?
- Lagom Dienst verbraucht weiteren Lagom Dienst im gleichen Cluster
- Lagom Dienst verbraucht weiteren Lagom Dienst in einem anderen Cluster
- Lagom Dienst
- Einen externen nicht-Lagom Dienst einen externen Nicht-Lagom Dienst verbraucht verbraucht einen Lagom Service
1. Lagom Dienst eines anderen Lagom Dienst im gleichen Cluster verbraucht
Für diesen Fall ist der Ansatz, dass ServiceAImpl von der ServiceB API abhängt, die an eine konkrete Implementierung gebunden ist, die in ServiceAImpl eingefügt wird.
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
);
};
}
}
Wenn ich es verstehen, um die Service-API auf diese Weise zu verbrauchen, müssen beide Clients im gleichen Cluster richtig. jedoch Lagom says dass
Ein Cluster sollte nur Spanne Knoten, die denselben Dienst ausgeführt werden.
In diesem Fall haben wir zwei verschiedene Arten von Diensten.
- "Derselbe Service" bedeutet einen Top-Level-Service, dessen API externen Services ausgesetzt ist?
- In Lagom 1 Microservice = 1 Service mit externer API + n interne Dienste?
2. Lagom Dienst verbraucht einen anderen Lagom Dienst in einem anderen Cluster
Die Dokumentation says:
Beachten Sie, dass, wenn der Dienst Sie ist eigentlich ein Lagom Dienst kommunizieren wollen Vielleicht möchten Sie die Dokumentation für integrating with an external Lagom projects lesen.
Warum wird nur die Abhängigkeit zur Service-API konfiguriert und nicht die IP und der Port des externen Lagom-Dienstes?
3. Lagom Dienst verbraucht einen externen Nicht-Lagom Service
Das erste, was Sie tun müssen, ist, jeden externen Dienst im Service Locator zu registrieren.Angenommen, wir ein externes Dienst namens Wetter registrieren möchten, die auf http://localhost:3333 laufen, hier ist, was wir zu dem Build hinzufügen würden:
lagomUnmanagedServices in ThisBuild := Map("weather" -> "http://localhost:3333")
Was ist der Vertrag mit dieser IP? Was sollte dahinter stehen?
4. Ein externer Nicht-Lagom Dienst verbraucht Lagom Service
Ich habe die Third-Party Registration Pattern bis Lagom unterstützt die self registration pattern benutzen?
Ich finde Ihre Frage, so verwirrend ... –
stimme zu, dass viele der hohen Ebene Lagom docs entkoppelte Dienste zu diskutieren, während die Bereitstellung die Einfachheit von 1 Cluster vermittelt .... – Matt