我一直在评估我的公司的消息传递技术,但我对几个术语之间的概念差异感到非常困惑:
Pub/Sub vs Multicast vs 扇出I使用以下定义:
这些定义正确吗?或者是Pub/Sub的模式和多播、直接、扇形等方式来实现模式?
我正在努力将开箱即用的RabbitMQ定义应用到我们的体系结构中,但我现在只是在兜圈子,试图为我们的应用编写规范。
请有人告诉我我是否是对的。
发布于 2011-11-26 07:17:31
我对你选择的三个术语比较感到困惑。在RabbitMQ中,Fanout和Direct是交换类型。Pub-Sub是一种通用消息传递模式,但不是exchange类型。您甚至没有提到第三种也是最重要的Exchange类型,即主题。实际上,您可以通过使用相同的绑定键声明多个队列来实现主题交换上的扇出行为。还可以通过将*作为通配符绑定键声明队列来定义主题交换上的直接行为。
Pub-Sub通常被理解为应用程序发布由多个订阅者使用的消息的模式。
对于RabbitMQ/AMQP,重要的是要记住消息总是发布到exchanges中。然后交换路线到队列。队列将消息传递给订阅者。交换的行为很重要。在主题交换中,来自发布服务器的路由密钥与来自订阅服务器的绑定密钥相匹配,以便作出路由决策。绑定密钥可以具有通配符模式,从而进一步影响路由决策。更复杂的路由可以是使用报头交换类型的基于消息头的内容完成。
RabbitMQ不能保证消息的传递,但是可以通过选择正确的选项(持久消息的传递模式=2),并在运行应用程序之前声明交换和队列,以避免消息被丢弃。
发布于 2011-11-25 04:31:22
你的定义很正确。请注意,保证交付不仅限于pub/sub,而且也可以通过扇出完成。是的,pub/sub是一个非常基本的描述,可以通过具体的方法来实现,如扇出法、直接法等。
您可能会发现有更多的消息传递模式是有用的。有关更多细节,请查看企业集成模式。
发布于 2014-10-22 22:41:15
从电子交换的角度来看,“多播”一词意味着“将消息放在线路上一次”,所有正在侦听的客户端应用程序都可以从“连线”读取消息。任何为N个客户端制作N个消息副本的解决方案都不是多播。除了检查源代码之外,还可以使用“嗅探器”来确定消息从消息传递系统通过线路发送了多少副本。是的,多播消息是UDP协议消息的一种形式。参见:http://en.wikipedia.org/wiki/Multicast的一般描述。大约十年前,我们使用了TIBCO提供的支持组播的消息传递系统。请参阅:guide&file=EMS.5.091.htm
https://stackoverflow.com/questions/8261654
复制相似问题