在Spring调度器和JMS之间选择哪一个?它们之间的区别是什么

在Spring调度器和JMS之间选择哪一个?它们之间的区别是什么,spring,jms,spring-async,Spring,Jms,Spring Async,我正在使用Spring调度器和JMS,哪一种是更好的调度方法 @Service public class ScheduledProcessor implements Processor { private final AtomicInteger counter = new AtomicInteger(); @Autowired private Worker worker; @Scheduled(fixedDelay = 30000) public v

我正在使用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());
        }
    }
}
@服务
公共类ScheduledProcessor实现处理器{
私有最终AtomicInteger计数器=新的AtomicInteger();
@自动连线
私人工人;
@计划(固定时间=30000)
公共程序(){
System.out.println(“在“+新日期()处理下一个10”);
对于(int i=0;i<10;i++){
work(counter.incrementAndGet());
}
}
}

这些解决方案根本不同

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

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


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

这些解决方案根本不同

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

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

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