我有一个Spring Boot应用程序,必须使用自定义代码发送分析数据。
我不希望每次收到记录时都发送数据,而是缓冲它们并以大量X元素发送它们。
例如,如果批量大小为10,而我在2分钟内仅收到5,那么我需要将它们全部发送并重新开始。

我使用术语“缓冲区”是因为找不到更好的方法来描述它。
实现这种事情的最佳方法是什么?是否存在实现相同功能的现有API?

最佳答案

您可以使用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
  }
}

10-06 14:00