关于java任务分发机制开发

本人接到一个需求具体如下:
权限分三等(简称):A、B、C
权限A:可以查询等级为1-5的信息

假设有两个人有A权限,那么这两个人看到的信息不能有重复(参考电话坐席)
小弟没有思路,恳请大神给出一套较完整的解决思路,尽量包含相对应的技术手段。

优先级队列 ,这样可以避免重复 并 达到 分等级的作用

消息队列,任务池 看你具体需求

我们就是座席电话回访任务分配,座席每次从任务池领取10个任务,锁定任务领取状态,同时监控session过期,将未完成的任务释放。

如果只有一个服务器,任务池可以用单例模式加锁。如果是分布式,可以用数据库的行锁。

看并发量决定使用的技术,高并发使用MQ,不是太高的话可以使用activety工作流引擎,再低的话可以使用ConcurrentLienkedQueue队列

这个应该是这个逻辑,有一个任务分发进程|线程,这个专门管理任务分发,任务分3级,A,B,C,分别入队列
将任务放入线程安全队列里,比如ArrayBlockingQueue,
假如A队列里有a1,a2,a3,a4个任务
假如A权限有2个用户(甲,乙)同时进来(考虑并发情况),甲调用poll,出队列一个任务,则任务池只剩下3个任务,乙也领任务,出队列则剩下2个任务,不会重复
以上为一种解决办法,此解决办法基于内存缓存,若重启机器,如果数据库无记录会发生混乱

第二种解决办法,将任务缓存redis消息队列里面,一样的出任务规则,好处是这样有任务记录,即使服务器挂掉,也不影响大局.