1

我正在使用 Spring 调度程序和 JMS,哪一种是更好的调度方法。

@Service
public class ScheduledProcessor implements Processor {

    private final AtomicInteger counter = new AtomicInteger();

    @Autowired
    private Worker worker;

    @Scheduled(fixedDelay = 30000)
    public void process() {
        System.out.println("processing next 10 at " + new Date());
        for (int i = 0; i < 10; i++) {
            worker.work(counter.incrementAndGet());
        }
    }
}
4

1 回答 1

0

这些解决方案根本不同。

计划服务在最后一次运行后每隔 n 毫秒启动一次,并处理任何可用的服务。它不能保证及时处理,并且如果要处理的数据量增加(并且如果处理具有一定程度的复杂性),则可能无法扩展。

我倾向于倾向于 JMS。首先,消息在进入时被处理,推送到侦听器,而不是像在服务中那样被轮询。其次,如有必要,您可以水平和垂直缩放消息,为您提供更多旋钮以确保实际处理不会使应用程序不堪重负。

基本问题可能是:您的要求是什么?

于 2016-11-11T02:17:39.303 回答