package client
- Alphabetic
- Public
- All
Type Members
-
trait
CircuitBreakerComponents extends LagomConfigComponent
Components required for circuit breakers.
-
trait
CircuitBreakersPanel extends AnyRef
A CircuitBreakersPanel is a central point collecting all circuit breakers in Lagom.
A CircuitBreakersPanel is a central point collecting all circuit breakers in Lagom.
Calls to remote services can make use of this facility in order to add circuit breaking capabilities to it.
-
abstract
class
CircuitBreakingServiceLocator extends ServiceLocator
Abstract service locator that provides circuit breaking.
Abstract service locator that provides circuit breaking.
Generally, only the ServiceLocator.locate() method needs to be implemented, however doWithServiceImpl() can be overridden if the service locator wants to handle failures in some way.
-
class
ConfigurationServiceLocator extends CircuitBreakingServiceLocator
A service locator that uses static configuration.
-
trait
ConfigurationServiceLocatorComponents extends CircuitBreakerComponents
Components for using the configuration service locator.
-
abstract
class
LagomClientFactory extends LagomServiceClientComponents with LagomConfigComponent
Convenience for constructing service clients in a non Lagom server application.
Convenience for constructing service clients in a non Lagom server application.
LagomClientFactory should be used only if your application DO have its own akka.actor.ActorSystem and Akka Streams akka.stream.Materializer, in which case you should reuse then when building a LagomClientFactory.
The easiest way to reuse your existing akka.actor.ActorSystem and Akka Stream akka.stream.Materializer is to extend the LagomClientFactory and add a constructor where you can pass them as arguments (see example below).
There is one more component that you’ll need to provide when creating a LagomClientFactory, that is a service locator. It is up to you what service locator you use, it could be a third party service locator, or a service locator created from static configuration.
Lagom provides a number of built-in service locators, including a StaticServiceLocator, a RoundRobinServiceLocator and a ConfigurationServiceLocator. The easiest way to use these is to mix in their respective Components traits.
For example, here’s a client factory built using the static service locator, which uses a static URI, and reusing an akka.actor.ActorSystem and Akka Streams akka.stream.Materializer created outside it:
import java.net.URI import com.lightbend.lagom.scaladsl.client._ import play.api.libs.ws.ahc.AhcWSComponents class MyLagomClientFactory(val actorSystem: ActorSystem, val materialzer: Materializer) extends LagomClientFactory("my-client") with StaticServiceLocatorComponents with AhcWSComponents { override def staticServiceUri = URI.create("http://localhost:8080") } val actorSystem = ActorSystem("my-app") val materializer = ActorMaterializer()(actorSystem) val clientFactory = new MyLagomClientFactory(actorSystem, materializer)
-
trait
LagomServiceClientComponents extends TopicFactoryProvider
The Lagom service client components.
-
class
RoundRobinServiceLocator extends CircuitBreakingServiceLocator
A round robin service locator, that cycles through a list of URIs.
-
trait
RoundRobinServiceLocatorComponents extends CircuitBreakerComponents
Components for using the round robin service locator.
-
trait
ServiceClient extends AnyRef
The Lagom service client implementor.
The Lagom service client implementor.
Instances of this must also implement ServiceClientConstructor, so that the
implementClient
macro can generate code that constructs the service client. -
trait
ServiceClientConstructor extends ServiceClient
Lagom service client constructor.
Lagom service client constructor.
This API should not be used directly, it will be invoked by the client generated by ServiceClient.implement in order to construct the client and obtain the dependencies necessary for the client to operate.
The reason for a separation between this interface and ServiceClient is so that the #construct method doesn't appear on the user facing ServiceClient API. The macro it generates will cast the ServiceClient to a ServiceClientConstructor in order to invoke it.
Although this API should not directly be used by end users, the code generated by the ServiceClient macro does cause end users to have a binary dependency on this class, which is why it's in the
scaladsl
package. -
trait
ServiceClientContext extends AnyRef
The service client context.
The service client context.
This API should not be used directly, it will be invoked by the client generated by ServiceClient.implement in order to implement each service call and topic.
The service client context is essentially a map of service calls and topics, constructed from a service descriptor, that allows a ServiceCall to be easily constructed by the services methods.
Although this API should not directly be used by end users, the code generated by the ServiceClient macro does cause end users to have a binary dependency on this class, which is why it's in the
scaladsl
package. -
trait
ServiceClientImplementationContext extends AnyRef
The service client implementation context.
The service client implementation context.
This API should not be used directly, it will be invoked by the client generated by ServiceClient.implement in order to resolve the service descriptor.
The purpose of this API is to capture the dependencies required in order to implement a service client, such as the HTTP and WebSocket clients.
Although this API should not directly be used by end users, the code generated by the ServiceClient macro does cause end users to have a binary dependency on this class, which is why it's in the
scaladsl
package. - trait ServiceResolver extends AnyRef
-
abstract
class
StandaloneLagomClientFactory extends LagomClientFactory
Convenience for constructing service clients in a non Lagom server application.
Convenience for constructing service clients in a non Lagom server application.
A StandaloneLagomClientFactory should be used only if your application does NOT have its own akka.actor.ActorSystem, in which this standalone factory will create and manage an akka.actor.ActorSystem and Akka Streams akka.stream.Materializer.
It is important to invoke StandaloneLagomClientFactory#stop() when the application is no longer needed, as this will trigger the shutdown of the underlying akka.actor.ActorSystem and Akka Streams akka.stream.Materializer releasing all thread and connection pools in use by the clients.
There is one more component that you’ll need to provide when creating a client application, that is a service locator. It is up to you what service locator you use, it could be a third party service locator, or a service locator created from static configuration.
Lagom provides a number of built-in service locators, including a StaticServiceLocator, a RoundRobinServiceLocator and a ConfigurationServiceLocator. The easiest way to use these is to mix in their respective Components traits.
For example, here’s a client application built using the static service locator, which uses a static URI:
import java.net.URI import com.lightbend.lagom.scaladsl.client._ import play.api.libs.ws.ahc.AhcWSComponents val clientApplication = new StandaloneLagomClientFactory("my-client") with StaticServiceLocatorComponents with AhcWSComponents { override def staticServiceUri = URI.create("http://localhost:8080") }
-
class
StaticServiceLocator extends CircuitBreakingServiceLocator
A static service locator, that always resolves the same URI.
-
trait
StaticServiceLocatorComponents extends CircuitBreakerComponents
Components for using the static service locator.
-
abstract
class
LagomClientApplication extends StandaloneLagomClientFactory
Convenience for constructing service clients in a non Lagom server application.
Convenience for constructing service clients in a non Lagom server application.
It is important to invoke #stop when the application is no longer needed, as this will trigger the shutdown of all thread and connection pools.
- Annotations
- @deprecated
- Deprecated
(Since version 1.4.9) Use StandaloneLagomClientFactory instead
Value Members
- object ClientStoppedReason extends Reason with Product with Serializable