多线程多队列问题
多线程多队列问题
单位要实现一个功能,客户端发起一个操作后,服务器要在之后的多个时间发通知到客户端(如1分钟后,10分钟后,20分钟后),当客户端较多时,可能存在同一秒要向很多个客户端发送通知,如何能保证同时发起操作的客户端都能在n秒后准时收到通知。
现在大致上有这么几个思路:
方法1). 保存要操作的数据到数据库
在数据库里记录要发起操作的时间,通过定时任务每秒轮询,发送通知对应客户端。
存在的问题是可能通知会有几秒的误差,但是暂时也可以接受
方法2). 将操作放入延时队列
发起操作后,记录要发送的信息到延时队列,多开些进程,时间到时发送通知到客户端
方法3). 使用多线程
发起操作后,打开一个线程开始倒计时,当时间到的时候发送通知到客户端
请问这三种方法是否可行,后期并发较多及业务要处理的逻辑更多的情况下,那种方式更能准时的向对应的客户端发送信息。
另外想问问有没有别的更好的实现。
推荐文章: