Kafka消费者onmessage-api调用对每条消息进行多次调用?

时间:2019-02-22 18:09:11

标签: javascript node.js promise kafka-consumer-api

请考虑以下内容:

      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
     }

以上代码在kafka流使用者的onmessage方法中被调用。我面临的问题是,如果结果不是且未定义缓存,则它将为传入的每个kafka消息多次调用url。

如何做到这样,只对传入的第一条消息进行一次调用,设置缓存,然后在下一条消息中,进入其余部分并从缓存中检索数据。

1 个答案:

答案 0 :(得分:0)

只需将requestRetry结果承诺放入缓存中。
解决后,缓存将更新为准确的结果。