【问题标题】:Publish/Subscribe vs Producer/Consumer?发布/订阅与生产者/消费者?
【发布时间】:2017-07-17 05:55:45
【问题描述】:

从消息传递的角度来看,像 kafka、rabbit、hornet mq、activemq 等系统...... pub/sub 和 prod/con 之间有区别还是可以互换使用?

【问题讨论】:

    标签: message-queue


    【解决方案1】:

    在生产者消费者中,生产者产生的消息只被一个消费者消费。即使有 n 个消费者,每条消息也只会被一个消费者消费。向 n 个消费者产生 n 条消息,每条消息将由一个消费者产生(循环算法)。

    与发布者订阅者相反,发布者产生的消息被所有订阅特定队列的订阅者消费。发布者产生消息,而订阅者消费消息。消息在订阅队列中发布。

    【讨论】:

      【解决方案2】:

      发布/订阅和生产者/消费者模型之间存在差异。

      发布/订阅:订阅者订阅发布者。 Publisher 发布的每条消息都会发送给所有订阅者。也就是说,所有订阅者都会收到相同的消息。 (想想报纸或杂志订阅。所有订阅者都会收到相同的杂志或报纸)

      生产者/消费者:生产者产生的每条消息将被单个消费者消费。这是一种将工作负载分配给多个消费者的机制。 (想想超市里的几个收银机。每个顾客去一个收银机。顾客就像产生的消息,收银机就是消费者)

      【讨论】:

      • 不同消费组的消费者可以消费同一个主题的同一条消息。
      • @Hackerman consumer group 是特定于某些消息代理(例如 Kafka)的术语。
      【解决方案3】:

      据我了解 - Prod/Consu - 生产者生产,消费者消费生产的任务。 - Publisher/Subscriber - 仅当 Subscriber 订阅 Publisher 时,Publisher 才会产生,Subscriber 才会使用产生的任务。

      两者都可以互换,但后一个在架构实际用例方面是有意义的。仅当基于订阅协议订阅时才生成和发布。

      谢谢

      【讨论】:

      • 这是这个问题的实际答案。发布-订阅涉及在消费前注册订阅者
      【解决方案4】:

      虽然发布/订阅和生产者/消费者这两个术语都与消息传递相关,但它们是不同的,不能互换使用。

      发布/订阅是一种消息传递模式,其中将发布分发给多个接收者。生产者是消息的发送者,消费者是消息的接收者。生产者和消费者是发布/订阅和点对点消息传递模式不可或缺的一部分。

      希望这会有所帮助。

      【讨论】:

      • 但它们经常互换使用。那么发布者和订阅者呢?
      • 是的,Publisher/Subscriber 和 Producer/Consumer 可以互换使用,但 Pub/Sub 和 Producer/Consumer 不能互换使用。 Publisher/Subscriber 专门用于 Pub/Sub 消息传递模式和 P2P 消息传递模式中的 Producer/Consumer。
      • 我认为你错了。关键是当一条消息被消费时,不会在生产者/消费者模式中与其他消费者一起处理。相反,当使用发布者/订阅者(观察者模式)时,将向所有订阅者发送消息。 *** 所以它们不能互换使用!!! ***
      猜你喜欢
      • 1970-01-01
      • 2018-03-14
      • 2019-08-19
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多