Kafka потребительское onmessage - вызов API делает несколько вызовов на каждое сообщение? - PullRequest
0 голосов
/ 22 февраля 2019

Рассмотрим следующее:

      const cached = this.cache.get(somekey);
      // console.log(!cached);
      if (!cached) {
        console.log(cached);
        return requestRetry({
          url: fullUri,
          json: true,
          maxAttempts: 3,   // (default) try 5 times
          retryDelay: 2000,  // (default) wait for 5s before trying again
          retryStrategy: requestRetry.RetryStrategies.HTTPOrNetworkError,
          fullResponse: true
        }).then((result) => {
           //do something with the result and return result
            this.cache.set(somekey, data);
            return result;
        }
     } else {
         //return cached result
     }

указанный выше код вызывается в методе onmessage потребителя потока kafka.Проблема, с которой я сталкиваюсь, заключается в том, что если результат не задан, а кэширование не определено, он делает несколько вызовов на URL для каждого входящего сообщения kafka.

Как сделать так, чтобы только один вызов был сделан в кулакПри поступлении сообщения он устанавливает кэш, а затем при следующем сообщении вводит остальную часть и получает данные из кэша.

1 Ответ

0 голосов
/ 23 февраля 2019

Просто поместите requestRetry результат обещания в кеш.
Когда он будет разрешен, кеш будет обновлен с точным результатом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...