【问题标题】:Producer-Consumer in Java - Multiple ConsumersJava 中的生产者-消费者 - 多个消费者
【发布时间】:2013-02-25 02:15:25
【问题描述】:

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

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

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

// 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

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

【问题讨论】:

  • 我看不出这里有多个消费者的原因。既然只有三种情况,为什么不让一个普通消费者处理呢?
  • 听起来你真的需要消息驱动的 bean 和主题。
  • 您是从头开始编写所有内容吗?使用 JMS API 怎么样?
  • @Sebastian 任务要求多个消费者。
  • @duffymo 你能解释一下吗?

标签: java producer-consumer


【解决方案1】:

最简单的方法是在消息发布时定义消息头。然后你可以有多个消费者,每个消费者都有唯一的 MessageSelector 来寻找特定的消息头。这样,只有正确的消费者才能收到消息,如果不正确的消费者收到消息,您不必担心重新发布消息(这非常低效,并且在有大量消息的负载系统上不会很好)通过系统)。

http://docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/prog_model.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    相关资源
    最近更新 更多