[英]priority selector with java nio?
我正在使用Amazon SQS队列,我想有两个队列,比方说一个具有高优先级任务,另一个具有低优先级任务。
我想创建一个设置,使我的应用始终先消耗所有高优先级任务,然后再开始消耗低优先级任务(在我看来,饥饿是没有问题的)。
我的第一个想法是拥有两个消费者,每个队列一个,从每个队列获取消息并将它们放入java.util.PriorityQueue,但是我想避免插入(和排序/阻塞/同步)开销,因为在那里将大量的消息。
然后,我想到了usign java.nio,但是我不知道这是否可行。
我的想法是仍然有两个使用者,但现在他们将任务放在两个nio.buffers(高优先级缓冲区,低优先级缓冲区)中,这些缓冲区绑定到nio.channels(高p.channel,低p.channel) ,然后选择器应该以某种方式首先从高优先级通道进行消耗,然后再从低优先级通道进行消耗。
我还没有找到配置此选择顺序的方法。 这可能吗?
还有其他选择吗?
提前致谢。
Amazon SQS提供了查询未读消息大小的功能。
当您要获取消息时,从高优先级SQS查询未读消息的大小,如果大小> 0,则从高优先级获取消息,否则从低优先级sqs获取消息。
AWSQSClient.getQueueUnreadSize(String queue_name);
这个怎么样?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.