首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >消息混淆: Pub/Sub vs Multicast与扇出

消息混淆: Pub/Sub vs Multicast与扇出
EN

Stack Overflow用户
提问于 2011-11-24 19:22:34
回答 3查看 37.3K关注 0票数 52

我一直在评估我的公司的消息传递技术,但我对几个术语之间的概念差异感到非常困惑:

Pub/Sub vs Multicast vs 扇出I使用以下定义:

  • Pub/Sub让发布者将每条消息的一个单独副本传递给每个订阅者,这意味着有机会保证发送
  • 扇出有一个队列推送到所有侦听客户端。
  • 多播只是发送数据,如果有人在监听,那么好的,如果没有,这并不重要。没有任何可能保证客户肯定会收到消息。

这些定义正确吗?或者是Pub/Sub的模式和多播、直接、扇形等方式来实现模式?

我正在努力将开箱即用的RabbitMQ定义应用到我们的体系结构中,但我现在只是在兜圈子,试图为我们的应用编写规范。

请有人告诉我我是否是对的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-26 07:17:31

我对你选择的三个术语比较感到困惑。在RabbitMQ中,Fanout和Direct是交换类型。Pub-Sub是一种通用消息传递模式,但不是exchange类型。您甚至没有提到第三种也是最重要的Exchange类型,即主题。实际上,您可以通过使用相同的绑定键声明多个队列来实现主题交换上的扇出行为。还可以通过将*作为通配符绑定键声明队列来定义主题交换上的直接行为。

Pub-Sub通常被理解为应用程序发布由多个订阅者使用的消息的模式。

对于RabbitMQ/AMQP,重要的是要记住消息总是发布到exchanges中。然后交换路线到队列。队列将消息传递给订阅者。交换的行为很重要。在主题交换中,来自发布服务器的路由密钥与来自订阅服务器的绑定密钥相匹配,以便作出路由决策。绑定密钥可以具有通配符模式,从而进一步影响路由决策。更复杂的路由可以是使用报头交换类型的基于消息头的内容完成

RabbitMQ不能保证消息的传递,但是可以通过选择正确的选项(持久消息的传递模式=2),并在运行应用程序之前声明交换和队列,以避免消息被丢弃。

票数 45
EN

Stack Overflow用户

发布于 2011-11-25 04:31:22

你的定义很正确。请注意,保证交付不仅限于pub/sub,而且也可以通过扇出完成。是的,pub/sub是一个非常基本的描述,可以通过具体的方法来实现,如扇出法、直接法等。

您可能会发现有更多的消息传递模式是有用的。有关更多细节,请查看企业集成模式

票数 9
EN

Stack Overflow用户

发布于 2014-10-22 22:41:15

从电子交换的角度来看,“多播”一词意味着“将消息放在线路上一次”,所有正在侦听的客户端应用程序都可以从“连线”读取消息。任何为N个客户端制作N个消息副本的解决方案都不是多播。除了检查源代码之外,还可以使用“嗅探器”来确定消息从消息传递系统通过线路发送了多少副本。是的,多播消息是UDP协议消息的一种形式。参见:http://en.wikipedia.org/wiki/Multicast的一般描述。大约十年前,我们使用了TIBCO提供的支持组播的消息传递系统。请参阅:guide&file=EMS.5.091.htm

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8261654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档