我有一个调度程序,它每1秒监听一次队列(Priorityqueue不像mq / jms),一旦我得到了我感兴趣的消息,我想执行一些逻辑。
所以我有每秒运行的调度程序,因为我正在调用@Async注释的方法,假设一旦我调用该方法,调度程序将以其间隔返回运行。
下面是示例代码,不确定我使用的是正确的模式还是建议。想法是,一旦我们有消息,我们不应该等待prev处理,我们可以有多个线程处理它。
我正在使用Spring启动。
@Scheduled(fixedDelayString = "1000", initialDelay = 10000)
public void startScheduler() {
Message msg = queue.peek();
if(msg!=null){
doProcessing(msg);
}
}
@Async
public void doProcessing(Message msg){
// Do processing
// May take 5 seconds.
}