什么是 Azure 服务总线?

Azure 服务总线是一种完全托管的企业集成消息中转站。 服务总线最常用于将应用程序与服务彼此解耦,是一种用于异步数据和状态传输的可靠且安全的平台。 数据通过消息在不同的应用程序和服务之间传输。 消息采用二进制格式,可能包含 JSON、XML 或纯文本。

一些常见的消息传送方案包括:

  • 消息传送:传输业务数据,例如销售或采购订单、日志或库存变动。
  • 解耦应用程序:提高应用程序和服务的可靠性和可伸缩性(客户端和服务不需同时联机)。
  • 主题和订阅:启用发布者和订阅者之间的 1:n 关系。
  • 消息会话:实现要求消息排序或消息延迟的工作流。

命名空间

命名空间是一个适用于所有消息传送组件的作用域容器。 多个队列和主题可以位于一个命名空间中,命名空间通常用作应用程序容器。

队列

消息可以发送到队列,也可以从其接收。 在能够使用接收应用程序接收并处理消息之前,可以通过队列来存储消息。

队列

队列中的消息会排队,并在到达时加盖时间戳。 获得接受后,消息会安全地存储在冗余存储中。 消息以拉取模式传送,即按请求传送消息。

主题

也可通过主题发送和接收消息。 队列通常用于点到点通信,而主题则用于发布/订阅方案。

主题

主题可以有多个独立的订阅。 主题的订阅者可以收到发送到该主题的每个消息的副本。 订阅是命名实体,可以采用持久方式来创建,但是也可以过期或自动删除。

某些情况下,你可能不希望单个订阅接收发送给某个主题的所有消息。 如果是这样,则可使用规则和筛选器来定义触发可选操作的条件,筛选指定的消息,并设置或修改消息属性。

高级功能

服务总线还有用于解决更复杂消息传送问题的高级功能。 以下部分介绍这些重要功能:

消息会话

若要在服务总线中实现先进先出 (FIFO) 保证,请使用会话。 使用消息会话,可以连贯有序的方式处理一系列无限多的相关消息。

自动转发

通过自动转发功能可将队列或订阅连接到作为相同命名空间组成部分的另一个队列或主题。 启用自动转发时,服务总线会自动删除放置在第一个队列或订阅(源)中的消息,并将其放入第二个队列或主题(目标)中。

死信

服务总线支持使用死信队列 (DLQ) 来存放无法传递给任何接收方的消息或无法处理的消息。 然后,可从 DLQ 中删除这些消息并对其进行检查。

计划的传递

可以将消息提交到队列或主题以供延迟处理;例如,将作业安排为在特定时间供系统处理。

消息延迟

当队列或订阅客户端收到一条它愿意处理,但由于应用程序中出现特殊状况而无法处理的消息时,该实体可将消息的检索延迟到将来的某个时间点。 该消息将保留在队列或订阅中,但会搁置处理。

批处理

客户端批处理允许队列或主题客户端延迟一段时间发送消息。 如果客户端在这段时间内发送其他消息,则会将这些消息以单个批次传送。

事务

一个事务将两个或更多操作组合成执行作用域。 服务总线支持对事务范围内的消息传送实体(队列、主题、订阅)执行分组操作。

筛选和操作

订阅者可以定义他们希望从主题接收的消息。 这些消息采用一个或多个命名订阅规则的形式指定。 对于每个匹配规则条件,订阅会生成消息的副本,这对于每个匹配规则可能会以不同方式进行批注。

出现空闲队列时自动删除

可以使用出现空闲队列时自动删除功能指定一个空闲时间间隔,该时间间隔过后系统会自动删除队列。 最短持续时间为 5 分钟。

重复检测

如果出现错误,导致客户端怀疑某个发送操作的结果,则可使用重复项检测,此功能支持发送程序重新发送相同的消息,并让队列或主题放弃任何重复的副本,这样就消除了这些情况下的各种怀疑。

SAS 和 RBAC

服务总线支持多种安全协议,例如共享访问签名 (SAS)、基于角色的访问控制 (RBAC)。

安全性

服务总线支持标准的 AMQP 1.0HTTP/REST 协议。

客户端库

服务总线支持用于 .NETJavaJMS 的客户端库。

集成

服务总线与以下 Azure 服务完全集成:

后续步骤

有关服务总线消息传送入门的内容,请参阅以下文章: