繁体   English   中英

java nio的优先选择器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM