gpt4 book ai didi

java - 如何有效地从红隼队列中获取数据

转载 作者:行者123 更新时间:2023-11-29 03:55:30 24 4
gpt4 key购买 nike

出于某种原因,我们计划在我们的项目中使用红隼队列。我们做了一些恶魔,主要问题是如何以低 CPU 利用率有效地从队列中获取数据。我们实现获取的方式是,如果我们从队列中获取数据失败超过 5 次,我们将线程 hibernate 100 毫秒以降低 CPU 利用率。

while (running) {
try {
LoginLogQueueEntry data = kestrelQueue.fetch();
if (null != data && data.isLegal()) {
entryCacheList.add(data); //add the data to the local caceh
resetStatus();
} else {
failedCount++;
//if there is no data in the kestrel and the local cache is not empty, insert the data into mysql database
if (failedCount == 1 && !entryCacheList.isEmpty()) {
resetStatus();
insertLogList(entryCacheList); // insert current data into database
entryCacheList.clear(); //empty local cache
}

if (failedCount >= 5 && entryCacheList.isEmpty()) {
//fail 5 times. Sleep current thread.
failedCount = 0;
Thread.sleep((sleepTime + MIN_SLEEP_TIME) % MAX_SLEEP_TIME);
}
}
//Insert 1000 rows once
if (entryCacheList.size() >= 1000) {
insertLogList(entryCacheList);
entryCacheList.clear();
}
} catch (Exception e) {
logger.warn(e.getMessage());
}

还有其他好的方法吗?我认为最完美的方式是队列可以通知工作人员我们获得了数据并获取它们。

最佳答案

请参阅 http://robey.lag.net/2008/11/27/scarling-to-kestrel.html 处的“阻止获取”部分

关于java - 如何有效地从红隼队列中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6621457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com