Для этого я использую 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) Если TTL записи ресурса DNS возвращается DNS -сервер меньше, чем минимальный TTL или больше, чем максимальный TTL, этот резольвер будет игнорировать TTL с DNS -сервера и Используйте минимальный TTL или максимальный TTL соответственно. Maxttl (10 секунд) следует использовать для кэширования результатов DNS, но я не наблюдаю так. Все, что я наблюдаю, это то, что я получаю последние IPS, повторяя только через 5 минут и не через 10 секунд. < /P>
Я что -то здесь не хватает? Любая помощь действительно ценится. п>
Подробнее здесь: https://stackoverflow.com/questions/794 ... -explicitl