java怎么处理服务订阅到期?
服务订阅,一般按年订阅。
订阅表字段:订阅状态、订阅开始日期、订阅结束日期;
订阅到期后需要将状态更新为“未订阅”,怎么检查订阅是否到期并更新状态?
- 定时任务:每天0时,那当前日期和到期日期去比较
- 监听机制
有什么更好的处理方式?哪种方式最优
回答:
不借助中间件的话。参考Redis中Key过期策略,定期删除+惰性删除。当然这是面对数据量可能比较大时,采用的策略。
单纯订阅逻辑,也可以采用不记录状态,改成状态动态计算方式。即 数据库记录一个订阅结束时间,每次查询时跟当前时间做下比较。
另外,还可以借助第三方中间件来实现。如RabbitMQ,使用其死信队列方式,来完成该功能。大概思路就是,有新订阅时,发送一个带过期时间的消息,当消息到期后会转发至配置的交换机然后再进入指定队列,消费消息再去库中查询并做相应操作。
不过技术实现要综合考虑,假设数据量不太多,单纯的采用数据库扫表,每隔5秒扫描一次也可。再假设业务层次对时间没那么敏感,每天凌晨统一扫表处理也没啥问题。再或者说,假如后端就你一人,能实现功能就不错了,还要啥自行车。
以上是 java怎么处理服务订阅到期? 的全部内容, 来源链接: utcz.com/p/945471.html