Class Service

java.lang.Object
io.smallrye.stork.api.Service

public class Service extends Object
Represents a Service.

This container gives you access to the service instances and to the selected service instance.

  • Constructor Details

    • Service

      public Service(String serviceName, String serviceSelectionType, String serviceDiscoveryType, ObservationCollector collector, LoadBalancer loadBalancer, ServiceDiscovery serviceDiscovery, ServiceRegistrar<?> serviceRegistrar, boolean requiresStrictRecording)
      Creates a new Service.
      Parameters:
      serviceName - the name, must not be null, must not be blank
      serviceSelectionType - the type of the service selection (for observability purpose)
      serviceDiscoveryType - the type of the service discovery (for observability purpose)
      collector - the observation collector, must not be null
      loadBalancer - the load balancer, can be null
      serviceDiscovery - the service discovery, must not be null
      serviceRegistrar - the service registrar, can be null
      requiresStrictRecording - whether strict recording must be enabled
  • Method Details

    • selectInstance

      public io.smallrye.mutiny.Uni<ServiceInstance> selectInstance()
      Selects a service instance.

      The selection looks for the service instances and select the one to use using the load balancer.

      Note: this method doesn't record a start of an operation using this load balancer and does not synchronize load balancer invocations even if the load balancer is not thread safe

      Returns:
      a Uni with a ServiceInstance, or with NoServiceInstanceFoundException if the load balancer failed to find a service instance capable of handling a call
    • selectInstance

      public ServiceInstance selectInstance(Collection<ServiceInstance> instances)
      Using the underlying load balancer, select a service instance from the collection of service instances.

      Note: this method doesn't record a start of an operation using this load balancer and does not synchronize load balancer invocations even if the load balancer is not thread safe

      Parameters:
      instances - collection of instances
      Returns:
      a ServiceInstance, or with NoServiceInstanceFoundException if the load balancer failed to find a service instance capable of handling a call
      Throws:
      NoServiceInstanceFoundException - if all the instances are nto
    • selectInstanceAndRecordStart

      public io.smallrye.mutiny.Uni<ServiceInstance> selectInstanceAndRecordStart(boolean measureTime)
      Selects a service instance and records a start of an operation using the instance

      The selection looks for the service instances and select the one to use using the load balancer.

      Parameters:
      measureTime - whether the operation for which the operation is chosen records time (will call ServiceInstance.recordReply())
      Returns:
      a Uni with a ServiceInstance, or with NoServiceInstanceFoundException if the load balancer failed to find a service instance capable of handling a call
      See Also:
    • selectInstanceAndRecordStart

      public ServiceInstance selectInstanceAndRecordStart(Collection<ServiceInstance> instances, boolean measureTime)
      Select a ServiceInstance for this service from a collection and record a start of an operation using the instance.

      Access to the underlying LoadBalancer method is serialized.

      Parameters:
      instances - instances to choose from
      measureTime - whether the operation for which the operation is chosen records time (will call ServiceInstance.recordReply())
      Returns:
      the selected instance
      See Also:
    • getInstances

      public io.smallrye.mutiny.Uni<List<ServiceInstance>> getInstances()
      Provide a collection of available ServiceInstances
      Returns:
      a Uni producing the list of ServiceInstances.
    • getLoadBalancer

      public LoadBalancer getLoadBalancer()
      Get the underlying load balancer instance.
      Returns:
      load balancer
    • getServiceDiscovery

      public ServiceDiscovery getServiceDiscovery()
      Get the underlying service discovery
      Returns:
      service discovery
    • getServiceRegistrar

      public ServiceRegistrar getServiceRegistrar()
      Get the underlying service registrar
      Returns:
      service registrar
    • getObservations

      public ObservationCollector getObservations()
    • getServiceName

      public String getServiceName()
      Returns:
      the service name.