我有一个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
}
}