Мне нужно отправить много вызовов аналитики, как их буферизовать и грипп sh в течение определенного периода, если буфер не заполнен - PullRequest
0 голосов
/ 08 мая 2020

У меня есть приложение весенней загрузки, которое должно отправлять аналитические данные с помощью специального кода. Я не хочу sh отправлять данные каждый раз, когда получаю запись, а вместо этого буферизую их и отправляю группами по X элементов. Если, например, размер пакета равен 10, а я получил только 5 в течение 2 минут, мне нужно отправить их все и начать заново.

Я использовал термин буфер, потому что не нашел лучшего способа описать Это. Как лучше всего реализовать такую ​​вещь? Существуют ли существующие API, реализующие то же самое?

1 Ответ

0 голосов
/ 11 мая 2020

Вы можете использовать CountDownLatch.

public class Sender implements Runnable {
  public CountDownLatch recordCount;
  public sender(CountDownLatch recordCount) {
     this.recordCount = recordCount;
  }
  public void run() {
    recordCount.await(2, TimeUnit.MINUTES); // this will stop waiting after 2 minutes or countDown is complete
    //send records in buffer
  }
}

public class Receiver implements Runnable {
  public CountDownLatch recordCount;
  public receiver(CountDownLatch recordCount) {
     this.recordCount = recordCount;
  }
  public void run() {
    //recieve and add to buffer
    recordCount.countDown(); // this will deceremnt the count
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...