Service Bus Brokered VS Relayed Messaging

hha*_*gan 10 servicebus azure azureservicebus azure-servicebusrelay

我有一个问题让我感到困惑的是,服务总线类型,代理消息传递和中继消息传递之间有什么区别?我不是从开发的角度来看它,但我想更多地了解它们之间的概念和差异.

谢谢.

小智 15

Service Bus Relay和Service Bus Brokered Messaging都是开发分布式和混合应用程序的机制.但是,它们针对不同的开发和访问模式.

  • 服务总线(SB)中继提供了一种简单安全的服务远程处理方式,即,它使您能够将托管在私有云上的服务安全地暴露给外部客户端.与服务远程处理方案一样,客户端显式调用"中继"服务公开的方法.SB Relay的主要优点是可以公开服务,而无需更改防火墙设置或对公司网络基础架构进行任何侵入式更改.

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

因此,中继消息传递适用于您希望向外部客户端公开的服务的情况.客户端与"Relayed"服务的交互方式与它们在本地网络上的方式相同,只是它们通过SB Relay端点访问它.由于这是服务远程处理方案,因此响应会立即受到网络延迟的影响.但是,如果由于某种原因,此时服务不可用,则客户端的请求将始终失败.

在代理消息传递的情况下,由于发送和接收操作是分离的,所以发送者可以继续发送可靠地存储在服务上的消息,而不管接收者是否在线.但是,这种弹性的权衡是,请求将根据接收者检索和处理消息的能力进行处理.


Sam*_*tte 5

我认为主要区别在于连接的同步与异步性质。

中继主要是一种防火墙友好的方式来向公共世界公开 Web 服务(即使在防火墙、NAT 设备等之后),消息传递更多的是一种通过队列和主题以异步方式交换消息的方式。(将其视为具有云支持的下一个版本 MSMQ :))

一切都取决于场景,但如果您正在寻找 - 路由(发布/订阅) - 松散耦合的发送方和接收方 - 负载均衡 那么你绝对应该去消息传递。

如果您想让外界轻松访问您的服务,中继服务就是您的朋友。


The*_*ude 4

来自 Azure 网站:

\n\n

中继

\n\n
\n

服务总线中继服务使您能够构建在 Windows Azure 数据中心和您自己的本地企业环境中运行的混合应用程序。服务总线中继通过\n 使您能够安全地将驻留在公司企业网络内的 Windows Communication Foundation (WCF)\n 服务公开到\n 公共云,而无需打开防火墙连接或\n 需要侵入式服务,从而实现这一点。公司网络基础设施的变化。

\n
\n\n

中继还可以为您处理负载平衡(您可以让多个应用程序在同一端点上侦听大多数绑定)。

\n\n

代理消息传递

\n\n
\n

第二个消息传递解决方案是最新版本的服务总线中的新功能,支持\xe2\x80\x9cbrokered\xe2\x80\x9d 消息传递功能。这些可以被视为异步或解耦的消息传递功能,支持使用服务总线消息传递基础结构的发布-订阅、时间解耦和负载平衡场景。解耦通信有很多优点;例如,客户端和服务器可以根据需要进行连接并以异步方式执行操作。

\n
\n\n

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

\n\n

主要区别在于,对于中继,您有应用程序在端点进行侦听。当您发送消息时,应用程序会在收到消息后处理该消息。对于代理消息传递,消息在客户端收到时会被存储,并且可以随时进行处理。

\n