我看了一些网上的说这两个业务场景都是能进行比如订单下单之后没有支付定时取消订单 这两个区别的是什么 有点懵
springtask实现的消息延迟,它需要每隔10s、20s或者1分钟扫描一次数据库;
优点:实现简单,可以快速完成开发然后上线
缺点:服务器内存消耗大、每次拉取一批数据,放在内存处理,没有达到削峰的目的;
存在延迟,因为处理一次之后,要隔10s、20s才会执行下一次;数据库压力增大,每次都要从数据库拉取一批数据;
需要自己主动拉取数据。
rabbitmq实现的延迟,它是额外的服务;
优点:高可用、容易扩展,比如订单比较多是,多增加几个队列,然后增加相同数量的消费者;
达到了削峰的目的,不是一次获取一批数据;
不占用业务系统的内存,业务系统没有这方面的内存压力;
业务系统被动接受数据,不需要自己主动拉取。
缺点:业务系统多引入了一个服务,可用性就降低了;
系统复杂度提高了,不容易管理;
数据一致性就带来风险,有可能消费队列丢失数据;
运维成本增大。