前言
rocetMQ支持时间延迟发送,不过是固定时间,可以考虑进行精确事件发送。
rocketMQ实现
延迟发送代码:
int level = 3;
message.setDelayTimeLevel();
这是rocketMQ的发送代码。
实现方式:将发送的消息topic进行替换,放到level级别的scheduleTopic当中。时间一到,轮询对应level的scheduleTopic取出来,恢复消息进行发送。减少了排序。
TimeWheel实现
可以采取timeWheel,具体查看参考