gpt4 book ai didi

java - 收到Kafka消息后10分钟内安排 Activity

转载 作者:行者123 更新时间:2023-12-01 16:53:39 24 4
gpt4 key购买 nike

我有一个 Java 应用程序,它有一个 Kafka 消费者。它接收消息,将它们存储在数据库中,并通过 Rest API 将它们发送到另一个应用程序以执行。我想在收到每条消息后 10 分钟内安排一个事件来检查消息的状态,如果消息未得到处理,则必须将其丢弃。

实现这一点的最佳方法是什么?有任何库或框架吗?

最佳答案

您可以使用多种方法(cron 作业):

1) 使用此示例代码new java.util.Timer().schedule ( javadoc ):

new java.util.Timer().schedule( 
new java.util.TimerTask() {
@Override
public void run() {
// your code here
}
},
5000
);

2)使用Executors.newSingleThreadScheduledExecutor():

// When your program starts up
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();

// then, when you want to schedule a task
Runnable task = ....
executor.schedule(task, 5, TimeUnit.SECONDS);

// and finally, when your program wants to exit
executor.shutdown();

完成后关闭执行器非常重要。当最后一个任务完成时,shutdown() 方法将彻底关闭线程池,并会阻塞直到发生这种情况。 shutdownNow() 将立即终止线程池。

3) 使用 cron4j用于 cron 表达式和调度 cronTrigger.getExpressionSummary() :

 CronTrigger t = new CronTrigger();
t.setCronExpression("0 30 10-13 ? * WED,FRI");
System.out.println(""+t.getExpressionSummary());

4) 使用javax.swing.Timer的示例:

Timer timer = new Timer(3000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// Code to be executed
}
});
timer.setRepeats(false); // Only execute once
timer.start(); // Go go go!

此代码只会执行一次,并且执行时间为 3000 毫秒(3 秒)。

关于java - 收到Kafka消息后10分钟内安排 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61633727/

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