Dnsnameresolver с использованием набора TTL на сервере DNS, а не тот, который я установил явноJAVA

Программисты JAVA общаются здесь
Anonymous
Dnsnameresolver с использованием набора TTL на сервере DNS, а не тот, который я установил явно

Сообщение Anonymous »

У меня есть требование получить IP -адрес из имени хоста DNS.
Для этого я использую dnsnameresolver. Само разрешение DNS работает нормально, и я получаю правильные IPS, когда я передаю имя хоста.
Кроме того, у меня также есть требование к кэшированию результатов DNS в течение некоторого времени. Для этого я пытаюсь установить время TTL как 5 секунд (MINTTL) и 10 секунд (MAXTTL), он, кажется, не работает.
Вот что я пытаюсь сделать: < /p>

Код: Выделить всё

DnsNameResolver dnsNameResolver = new DnsNameResolverBuilder(eventLoopGroup.next())
.channelType(NioDatagramChannel.class)
.nameServerProvider(DnsServerAddressStreamProviders.platformDefault())
.ttl(5,10)
.negativeTtl(10)
.build();

List inetAddresses = dnsNameResolver.resolveAll(hostname).get();
< /code>
Когда подключение к разрешению IPS не удалось, я повторяю, чтобы снова получить последние IPS, используя ResolveAll (имя хоста) и пытаясь снова подключиться к разрешенным IPS.
Однако. , мое разрешенное обновление IPS только после установки TTL на моем сервере DNS, а не в TTL, который я установил на свой Dnsnameresolver.
Вот что, чем ttl (int minttl, int maxttl) 
метод в dnsnameresolverbuilder говорит:

Если TTL записи ресурса DNS возвращается DNS -сервер меньше, чем минимальный TTL или больше, чем максимальный TTL, этот резольвер будет игнорировать TTL с DNS -сервера и Используйте минимальный TTL или максимальный TTL соответственно. Maxttl (10 секунд) следует использовать для кэширования результатов DNS, но я не наблюдаю так. Все, что я наблюдаю, это то, что я получаю последние IPS, повторяя только через 5 минут и не через 10 секунд. < /P>
Я что -то здесь не хватает? Любая помощь действительно ценится. п>

Подробнее здесь: https://stackoverflow.com/questions/794 ... -explicitl

Вернуться в «JAVA»