Class DiscoveryClientResolverFactory

java.lang.Object
io.grpc.NameResolver.Factory
io.grpc.NameResolverProvider
net.devh.boot.grpc.client.nameresolver.DiscoveryClientResolverFactory

public class DiscoveryClientResolverFactory extends NameResolverProvider
A name resolver factory that will create a DiscoveryClientNameResolver based on the target uri.
  • Field Details

    • DISCOVERY_SCHEME

      public static final String DISCOVERY_SCHEME
      The constant containing the scheme that will be used by this factory.
      See Also:
    • DISCOVERY_SERVICE_NAME_KEY

      public static final Attributes.Key<String> DISCOVERY_SERVICE_NAME_KEY
      A key for the service name used to related ServiceInstances from the DiscoveryClient.
    • DISCOVERY_INSTANCE_ID_KEY

      public static final Attributes.Key<String> DISCOVERY_INSTANCE_ID_KEY
      A key for the instance id.
  • Constructor Details

    • DiscoveryClientResolverFactory

      public DiscoveryClientResolverFactory(org.springframework.cloud.client.discovery.DiscoveryClient client)
      Creates a new discovery client based name resolver factory.
      Parameters:
      client - The client to use for the address discovery.
  • Method Details

    • newNameResolver

      @Nullable public NameResolver newNameResolver(URI targetUri, NameResolver.Args args)
      Specified by:
      newNameResolver in class NameResolver.Factory
    • newNameResolver

      protected DiscoveryClientNameResolver newNameResolver(String serviceName, NameResolver.Args args)
      Factory method to create the resolver for the given service name.
      Parameters:
      serviceName - The service name to create it for.
      args - The NameResolver arguments to use.
      Returns:
      A newly created DiscoveryClientNameResolver.
    • getDefaultScheme

      public String getDefaultScheme()
      Specified by:
      getDefaultScheme in class NameResolver.Factory
    • isAvailable

      protected boolean isAvailable()
      Specified by:
      isAvailable in class NameResolverProvider
    • priority

      protected int priority()
      Specified by:
      priority in class NameResolverProvider
    • heartbeat

      @EventListener(org.springframework.cloud.client.discovery.event.HeartbeatEvent.class) public void heartbeat(org.springframework.cloud.client.discovery.event.HeartbeatEvent event)
      Triggers a refresh of the registered name resolvers.
      Parameters:
      event - The event that triggered the update.
    • destroy

      @PreDestroy public void destroy()
      Cleans up the name resolvers.
    • toString

      public String toString()
      Overrides:
      toString in class Object