Class DnsAddressEndpointGroup
java.lang.Object
com.linecorp.armeria.common.util.AbstractListenable<List<Endpoint>>
com.linecorp.armeria.client.endpoint.DynamicEndpointGroup
com.linecorp.armeria.client.endpoint.dns.DnsAddressEndpointGroup
- All Implemented Interfaces:
DnsCacheListener
,EndpointGroup
,EndpointSelector
,AsyncCloseable
,Listenable<List<Endpoint>>
,ListenableAsyncCloseable
,AutoCloseable
DynamicEndpointGroup
which resolves targets using DNS address queries (A
and AAAA
).
This is useful for environments where service discovery is handled using DNS, e.g.
Kubernetes DNS-based service
discovery.-
Method Summary
Modifier and TypeMethodDescriptionReturns a newDnsAddressEndpointGroupBuilder
with the specified hostname.protected final void
doCloseAsync
(CompletableFuture<?> future) Stops polling DNS servers for service updates.Returns the latest value notified before.static DnsAddressEndpointGroup
Creates aDnsAddressEndpointGroup
with an unspecified port that schedules queries on a randomEventLoop
fromCommonPools.workerGroup()
.static DnsAddressEndpointGroup
Creates aDnsAddressEndpointGroup
that schedules queries on a randomEventLoop
fromCommonPools.workerGroup()
.final void
onRemoval
(DnsQuestion question, @Nullable List<DnsRecord> records, @Nullable UnknownHostException cause) Invoked when a removal occurred.Methods inherited from class com.linecorp.armeria.client.endpoint.DynamicEndpointGroup
addEndpoint, allowsEmptyEndpoints, builder, close, closeAsync, endpoints, isClosed, isClosing, removeEndpoint, select, selectionStrategy, selectNow, setEndpoints, toString, whenClosed, whenReady
Methods inherited from class com.linecorp.armeria.common.util.AbstractListenable
addListener, addListener, notifyListeners, removeListener
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.linecorp.armeria.client.endpoint.EndpointGroup
addListener, addListener, orElse, removeListener
-
Method Details
-
of
Creates aDnsAddressEndpointGroup
with an unspecified port that schedules queries on a randomEventLoop
fromCommonPools.workerGroup()
.- Parameters:
hostname
- the hostname to query DNS queries for
-
of
Creates aDnsAddressEndpointGroup
that schedules queries on a randomEventLoop
fromCommonPools.workerGroup()
.- Parameters:
hostname
- the hostname to query DNS queries forport
- the port of theEndpoint
s
-
builder
Returns a newDnsAddressEndpointGroupBuilder
with the specified hostname.- Parameters:
hostname
- the hostname to query DNS queries for
-
onRemoval
public final void onRemoval(DnsQuestion question, @Nullable @Nullable List<DnsRecord> records, @Nullable @Nullable UnknownHostException cause) Description copied from interface:DnsCacheListener
Invoked when a removal occurred.- Specified by:
onRemoval
in interfaceDnsCacheListener
- Parameters:
question
- the DNS question.records
- the result of a successful DNS resolution.null
if failed.cause
- the cause of a failed DNS resolution.null
if succeeded.
-
doCloseAsync
Stops polling DNS servers for service updates.- Overrides:
doCloseAsync
in classDynamicEndpointGroup
-
latestValue
Description copied from class:AbstractListenable
Returns the latest value notified before.null
if the value has not been initialized yet or the implementation of this class cannot cache it.- Overrides:
latestValue
in classAbstractListenable<List<Endpoint>>
-