销售电话: 1-800-867-1380

利用 Azure 服务总线中转消息传递 API 的最佳做法

更新时间: 2014年3月

注:本页面内容可能不完全适用中国大陆地区运营的 Windows Azure服务。如要了解不同地区 Windows Azure 服务的差异, 请参考本网站.

作者:Valery Mizonov

供稿人:Seth Manheim、Paolo Salvatori、James Podgorski、Eric Lam、Jayu Katti

本文为开发人员提供一些实践指南,帮助开发人员在 Windows Azure Service Bus 中使用 .NET 托管中转消息传递 API。在本文中提供的建议直接来自最近的客户项目。在使用 Service Bus 构建实际的解决方案时,我们了解了一些关键的最佳做法以及很少为人所知的秘密,它们将帮助改进使用 Service Bus 中全新的中转消息传递功能的解决方案的可靠性和性能。本文旨在与开发人员社区分享这些经验教训。

中继消息传递与中转消息传递

Microsoft Azure Service Bus 提供两个全面的消息传递解决方案。第一个解决方案是通过集中式、高负载平衡的“中继”服务提供的,它在云中运行,支持多种不同的传输协议和 Web 服务标准(包括 SOAP、WS-* 和 REST)。中继服务支持直接的单向消息传递、请求/响应消息传递和对等消息传递。与这种消息传递解决方案相关联的模式称作“中继”消息传递。在中继消息传递模式中,内部或基于云的服务通过出站端口连接到中继服务,并且为绑定到特定约定地址的通信创建双向套接字。客户端不必知道服务所在的位置,并且内部服务无需在防火墙上打开任何入站端口。中继消息传递提供许多好处,但要求服务器和客户端同时处于联机状态,以便收发消息。中继消息传递从 Service Bus 的最初发行版开始就已经提供。

第二个消息传递解决方案启用中转消息传递功能。中转消息传递架构也被视作异步或“暂时分离的”消息传递。生成方(发送方)和使用者(接收方)不必同时都处于联机状态。该消息传递基础结构会可靠地存储这些消息,直至使用方可以接收消息。这允许分布式应用程序的组件断开连接。这一断开连接可以是自愿的,例如进行维护时;或者是由于某个组件损坏,但不会影响整个系统。此外,接收应用程序可能仅需要在一天的某些时间处于联机状态,例如仅在下班后才需要运行的库存管理系统。

Service Bus中转消息传递基础结构的核心组件是“队列”、“主题”和“订阅”。这些组件实现新的异步消息传递方案,例如暂时分离、发布/订阅、负载分级和负载平衡。有关这些方案的详细信息,请参阅“其他资源”部分。

中转消息传递 API 概述

在本指南中,你将会看到有关 .NET 托管中转消息传递 API 中提供的不同组件、类和类型的许多参考资料。为了综合地看问题,我们列出了一些关键 API,它们提供并支持 Service Bus 中的中转消息传递功能。

下面的类是来自 Microsoft.ServiceBusMicrosoft.ServiceBus.Messaging 命名空间并且在你开发中转消息传递解决方案时经常涉及的常用 API 成员:

 

类名称

说明

BrokeredMessage

表示在Service Bus客户端之间进行通信的单位。在消息传递客户端通过队列和主题进行通信时,通过网线传输 BrokeredMessage 对象的序列化实例。

QueueClient

表示一个消息传递对象,该对象支持从Service Bus队列发送和接收消息。

QueueDescription

表示描述Service Bus队列的元数据对象,包括队列路径、行为设置(例如锁定持续时间、默认 TTL、重复检测)和信息性数据点(例如当前队列长度和大小)。

TopicClient

表示一个消息传递对象,该对象支持将消息发送到Service Bus主题。

TopicDescription

表示描述Service Bus主题的元数据对象,包括主题路径、行为设置(例如重复检测)和信息性数据点(例如当前大小和最大主题大小)。

SubscriptionClient

表示一个消息传递对象,该对象支持从Service Bus订阅接收消息。

SubscriptionDescription

表示描述Service Bus订阅的元数据对象,包括订阅名称、所拥有的主题路径、行为设置(例如会话支持、默认 TTL、锁定持续时间)和信息性数据点(例如当前消息计数)。

NamespaceManager

表示一个管理对象,该对象负责针对Service Bus消息传递实体(队列、主题、订阅、规则)的运行时操作,包括创建、检索、删除和断言存在。

MessagingFactory

表示一个工厂对象,该对象负责实例化、跟踪和管理消息传递实体客户端(例如 TopicClient、QueueClient 和 SubscriptionClient)的生命周期。

MessageReceiver

表示一个抽象的消息传递对象,该对象支持对消息接收操作具有特定焦点的丰富的消息传递功能。

MessageSender

表示一个抽象的消息传递对象,该对象支持对消息发送操作具有特定焦点的丰富的消息传递功能。

MessageSession

表示一个消息会话,该会话支持对相关消息进行分组,以便在单个事务中进行处理。

Filter

表示一个抽象的元数据对象,该对象由一个筛选表达式以及在Service Bus订阅评估引擎中执行的关联操作构成。Filter 类充当 TrueFilterFalseFilterSqlFilterCorrelationFilter 的基类,表示某一给定筛选器类型的元数据对象的实现方式。

TokenProvider

表示一个工厂对象,该对象提供对不同类型的安全令牌提供程序的访问,这些提供程序负责 SAML、共享机密和简单 Web 令牌的获取。

建议你开始熟悉这些 API 项目,以便在使用 Service Bus 构建你的第一个中转消息传递解决方案方面走在别人的前面。请注意,这个列表并不详尽,没有列出在中转消息传递 API 中提供的所有类。有关所有 API 成员的完整列表,请参阅 MSDN 文档。

中转消息传递 API 的最佳做法

本节中的主题分享了从 .NET 托管中转消息传递 API 的动手经验中得出的具体建议。这些建议的目标是鼓励开发人员应用在以下各节中论述的技术和模式,以便能够提供强健的消息传递解决方案。本节包含下列主题:

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈

社区附加资源

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft