生产者查看每种消息类型,并根据该ArrayBlockingQueue
中的可用空间路由到任何Queue
。只有两种类型的消息:类型1或类型2。给定的队列只能包含一种类型的消息。我想构建一个可以具有“ m”个队列的系统,其中的一些队列将包含Type 1消息,其余的队列将包含Type 2消息。现在,每个队列可以有一个或多个消费者从中读取。 Queue
到使用者的映射为1:n。每个使用者将只消耗1个队列。
现在,我想要的功能是这样:
put()
向该队列中发送一条消息。仅当所有队列都已满时,生产者才应在put()
上阻塞。 take()
并获得自己的消息。 ArrayBlockingQueue
是否可行且优雅?还是对此问题有更好的解决方案?