服务总线代理消息与中继消息的区别

12
我有一个令我困惑的问题,这些服务总线类型之间有哪些区别,包括经纪人消息和中继消息?我不是从开发角度来看它,而是想更好地理解概念和它们之间的区别。
谢谢。
3个回答

18

服务总线中继和服务总线经纪消息都是用于开发分布式和混合应用程序的机制。但是,它们针对不同的开发和访问模式。

  • 服务总线(SB)中继提供了一种简单且安全的方式来进行服务重定向,即它使您能够安全地将托管在私有云上的服务公开到外部客户端。与服务重定向场景相同,客户端显式调用“中继”服务公开的方法。 SB中继的主要优点是,无需更改防火墙设置或任何侵入性更改企业网络基础架构即可公开服务。

  • 另一方面,SB经纪消息提供了一个持久的消息平台,其中包括队列、主题和订阅等组件。这些可以用于实现复杂的模式,如发布-订阅和应用程序不同部分之间的时间解耦。由于经纪消息基础结构可以可靠地存储消息,发送者和接收者不必同时在线,也不必以相同的速度处理消息。

因此,中继消息适用于您想要向外部客户端公开服务的场景。客户端以与本地网络上的情况相同的方式与“中继”服务交互,只是它们通过SB中继端点访问它。由于这是一个服务重定向场景,响应立即取决于网络延迟。但是,如果由于某种原因服务此时不可用,则客户端请求将始终失败。

在经纪消息的情况下,由于发送和接收操作是解耦的,因此发送方可以继续发送可靠存储在服务上的消息,而不管接收方是否在线。然而,这种韧性的权衡是请求将根据接收方检索和处理消息的能力进行处理。


非常感谢你,我真的很感激 :) 现在对我来说非常清晰 :) - hhaggan

6
我认为主要区别在于连接的同步和异步性质。
其中,中继大多是一种防火墙友好的方式,可以将Web服务公开到公共网络上(即使在防火墙、NAT设备等后面),而消息传递更多地是一种通过队列和主题异步交换消息的方式。(把它看作具有云支持的下一个版本MSMQ :))
一切都取决于情景,但如果您正在寻找以下内容: - 路由(发布/订阅) - 发送方和接收方之间的松耦合 - 负载平衡 那么您应该选择消息传递。
如果您想让您的服务轻松地为外部世界所达到,那么中继服务就是您的朋友。

不确定这个答案比下面的更好。尽管同步与异步看起来没问题,但没有支持链接,并且它们不是苹果对苹果的比较。一个看起来是服务,另一个存储消息并提供消息服务。我希望这个答案是第二个,而不是第一个,因为第二个更完整。只是一个想法,如果这继续成为未来的第一个答案,可能会帮助其他人先看下面的答案。 - Manohar Reddy Poreddy

4

来自Azure网站:

Relay

Service Bus Relay服务使您能够构建混合应用程序,这些应用程序运行在Windows Azure数据中心和您自己的本地企业环境中。 Service Bus中继通过让您安全地公开位于企业网络内部的Windows Communication Foundation(WCF)服务,从而使此过程得以实现,无需打开防火墙连接或要求对企业网络基础架构进行侵入性更改。

Relay还为您处理负载平衡(您可以有多个应用程序在同一终结点监听大多数绑定)。

Brokered Messaging

最新版本的Service Bus中的第二种消息传递解决方案提供了“经纪人”消息传递功能。这些可以被认为是支持使用Service Bus消息基础结构的发布/订阅,时间分离和负载平衡场景的异步或分离的消息特性。分离的通信具有许多优点;例如,客户端和服务器可以根据需要连接并以异步方式执行其操作。

经纪代理消息包括队列、主题/订阅,允许您异步发送/接收消息。

主要区别在于中继中,应用程序在终结点监听。当您发送消息时,应用程序在接收到消息时处理该消息。对于经纪代理消息,客户端接收消息时将其存储,并可以随时处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接