Java中的生产者-消费者-多个消费者

Java中的生产者-消费者-多个消费者,java,producer-consumer,Java,Producer Consumer,我在Java中有一个生产者-消费者模型,其中有多个消费者。我在生产者和消费者之间传递一个对象,它有一个变量,我们称之为“name” 现在,这个名称可以是A、B或C。如果值是A,则一个消费者会将其从队列中取出并对其进行处理。如果值为B,则不同的使用者会将其从同一队列中取出并执行其他操作。如果值为C,则第三个使用者也会这样做 我的问题是如何实现这一点。我目前的理论如下(伪代码): 是这样的工作,还是会对我的线程同步造成严重破坏?如果它不起作用,我应该使用什么模型来实现它?最简单的方法是在消息发布时定

我在Java中有一个生产者-消费者模型,其中有多个消费者。我在生产者和消费者之间传递一个对象,它有一个变量,我们称之为“name”

现在,这个名称可以是A、B或C。如果值是A,则一个消费者会将其从队列中取出并对其进行处理。如果值为B,则不同的使用者会将其从同一队列中取出并执行其他操作。如果值为C,则第三个使用者也会这样做

我的问题是如何实现这一点。我目前的理论如下(伪代码):


是这样的工作,还是会对我的线程同步造成严重破坏?如果它不起作用,我应该使用什么模型来实现它?

最简单的方法是在消息发布时定义消息头。然后您可以有多个消费者,每个消费者都有唯一的MessageSelector,用于查找特定的消息头。这样,只有正确的使用者才能获得消息,如果错误的使用者获得消息,您不必担心重新发布消息(这是非常低效的,并且在系统中有大量消息的加载系统上是不好的)


我看不出这里有多个消费者的原因。既然只有三种情况,为什么不让一个普通消费者来处理呢?听起来你真的需要消息驱动的bean和主题。你是从零开始写的吗?使用JMS API如何?@Sebastian多个消费者是任务的强制要求。@duffymo你能解释一下吗?
// This is code for each consumer
pull item off the queue
check if item.name is right for this consumer (A, B, or C)
if so, send it to consume()
else, put it back on the queue