任意时间的定时,使用RocketMQ本身是实现不了的,以下提供了通过借助RocketMQ实现任意时间的定时消息。

总体叙述:通过计算当前时间和定时的时间之间的秒数,去匹配RocketMQ的延时等级,如果没有匹配到,找到第一个比目前时间秒数小或者相等的级别,作为延时等级向MQ推送消息,以此类推,知道找到合适的延时等级。

该方案具体的代码可以站内邮箱联系我。

通过定时任务去读取数据库,定时扫描,当扫描到满足推送的消息时,推送到MQ即可。

缺点:发送消息有延迟,取决于定时扫描的周期,太快了可能会影响性能,太慢了又不准时。