Весенний тайм-аут установлен динамически - кофеин - PullRequest
0 голосов
/ 31 октября 2018

Я использую API аутентификации для получения токена и использования других сервисов. Этот API возвращает токен и время истечения. Можно получить время истечения, которое он возвращает, и установить expire_after_write с этими значениями? В настоящее время это свойство находится в application.properties, но я боюсь, что когда-нибудь поставщик услуг изменит expire_time, и мы получим некоторые ошибки, поскольку срок действия токена истек

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете установить политику для каждой записи , чтобы оценить запись и определить срок действия. Так как токен не будет изменен в кэше, вы можете использовать expireAfterCreate, а другие методы возвращают currentDuration, чтобы не изменять его. Из документов

LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
    .expireAfter(new Expiry<Key, Graph>() {
      public long expireAfterCreate(Key key, Graph graph, long currentTime) {
        // Use wall clock time, rather than nanotime, if from an external resource
        long seconds = graph.creationDate().plusHours(5)
            .minus(System.currentTimeMillis(), MILLIS)
            .toEpochSecond();
        return TimeUnit.SECONDS.toNanos(seconds);
      }
      public long expireAfterUpdate(Key key, Graph graph, 
          long currentTime, long currentDuration) {
        return currentDuration;
      }
      public long expireAfterRead(Key key, Graph graph,
          long currentTime, long currentDuration) {
        return currentDuration;
      }
    })
    .build(key -> createExpensiveGraph(key));
...