你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
充当事件网格源的 Azure 服务总线
本文提供了服务总线事件的属性和架构。 有关事件架构的简介,请参阅 Azure 事件网格事件架构。
注意
仅“高级”层服务总线命名空间支持事件集成。 “基本”层和“标准”层不支持与事件网格集成。
可用事件类型
服务总线发出以下事件类型:
事件类型 | 说明 |
---|---|
Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners |
在新的活动消息到达队列或订阅,并且没有接收方侦听时引发。 |
Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListeners |
在新的活动消息到达死信队列,但没有活动侦听器时引发。 |
Microsoft.ServiceBus.ActiveMessagesAvailablePeriodicNotifications |
如果队列或订阅中存在活动消息,则每隔 30 秒引发一次,即使该特定队列或订阅上存在活动侦听器。 当队列或订阅的活动消息计数从 0 转换为正值时,也会引发此事件。 |
Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications |
如果队列或订阅的死信实体中存在消息,则每 30 秒引发一次,即使该特定队列或订阅的死信实体上存在活动侦听器。 当队列或订阅的死信实体的死信消息计数从 0 转换为正值时,也会引发此事件。 |
示例事件
没有侦听器时有活动消息可用
如果队列或订阅中存在活动的消息,但却没有接收器侦听,则会生成此事件。
[{
"topic": "/subscriptions/{subscription-id}/resourcegroups/{your-rg}/providers/Microsoft.ServiceBus/namespaces/{your-service-bus-namespace}",
"subject": "topics/{your-service-bus-topic}/subscriptions/{your-service-bus-subscription}",
"eventType": "Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "https://{your-service-bus-namespace}.servicebus.windows.net/{your-topic}/subscriptions/{your-service-bus-subscription}/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
没有侦听器时有死信消息可用
死信队列事件的架构类似。 对于每个有消息但没有活动接收器的死信队列,你会至少收到一个事件。
[{
"topic": "/subscriptions/{subscription-id}/resourcegroups/{your-rg}/providers/Microsoft.ServiceBus/namespaces/{your-service-bus-namespace}",
"subject": "topics/{your-service-bus-topic}/subscriptions/{your-service-bus-subscription}",
"eventType": "Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListeners",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "https://{your-service-bus-namespace}.servicebus.windows.net/{your-topic}/subscriptions/{your-service-bus-subscription}/$deadletterqueue/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
活动消息可用定期通知
如果在特定队列或订阅中有活动消息,即使该特定队列或订阅有活动侦听器,也会定期生成此事件。
[{
"topic": "/subscriptions/<subscription id>/resourcegroups/DemoGroup/providers/Microsoft.ServiceBus/namespaces/<YOUR SERVICE BUS NAMESPACE WILL SHOW HERE>",
"subject": "topics/<service bus topic>/subscriptions/<service bus subscription>",
"eventType": "Microsoft.ServiceBus.ActiveMessagesAvailablePeriodicNotifications",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "https://YOUR-SERVICE-BUS-NAMESPACE-WILL-SHOW-HERE.servicebus.windows.net/TOPIC-NAME/subscriptions/SUBSCRIPTIONNAME/$deadletterqueue/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
死信消息可用定期通知
如果在特定队列或订阅上具有死信消息,即使该特定队列或订阅的死信实体上有活动侦听器,也会定期生成此事件。
[{
"topic": "/subscriptions/<subscription id>/resourcegroups/DemoGroup/providers/Microsoft.ServiceBus/namespaces/<YOUR SERVICE BUS NAMESPACE WILL SHOW HERE>",
"subject": "topics/<service bus topic>/subscriptions/<service bus subscription>",
"eventType": "Microsoft.ServiceBus.DeadletterMessagesAvailablePeriodicNotifications",
"eventTime": "2018-02-14T05:12:53.4133526Z",
"id": "dede87b0-3656-419c-acaf-70c95ddc60f5",
"data": {
"namespaceName": "YOUR SERVICE BUS NAMESPACE WILL SHOW HERE",
"requestUri": "https://YOUR-SERVICE-BUS-NAMESPACE-WILL-SHOW-HERE.servicebus.windows.net/TOPIC-NAME/subscriptions/SUBSCRIPTIONNAME/$deadletterqueue/messages/head",
"entityType": "subscriber",
"queueName": "QUEUE NAME IF QUEUE",
"topicName": "TOPIC NAME IF TOPIC",
"subscriptionName": "SUBSCRIPTION NAME"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
事件属性
事件具有以下顶级数据:
属性 | 类型 | 说明 |
---|---|---|
topic |
string | 事件源的完整资源路径。 此字段不可写入。 事件网格提供此值。 |
subject |
string | 事件主题的发布者定义路径。 |
eventType |
string | 此事件源的一个注册事件类型。 |
eventTime |
string | 基于提供程序 UTC 时间的事件生成时间。 |
id |
string | 事件的唯一标识符。 |
data |
object | Blob 存储事件数据。 |
dataVersion |
string | 数据对象的架构版本。 发布者定义架构版本。 |
metadataVersion |
string | 事件元数据的架构版本。 事件网格定义顶级属性的架构。 事件网格提供此值。 |
数据对象具有以下属性:
属性 | 类型 | 说明 |
---|---|---|
namespaceName |
string | 资源所在的服务总线命名空间。 |
requestUri |
string | 发出此事件的特定队列或订阅的 URI。 |
entityType |
string | 发出事件的服务总线实体的类型(队列或订阅)。 |
queueName |
string | 如果订阅队列,则为包含活动消息的队列。 如果使用主题 / 订阅,则为值 null。 |
topicName |
string | 包含活动消息的服务总线订阅所属的主题。 如果使用队列,则值为 null。 |
subscriptionName |
string | 包含活动消息的服务总线订阅。 如果使用队列,则值为 null。 |
教程和操作指南
标题 | 描述 |
---|---|
教程:Azure 服务总线到 Azure 事件网格集成示例 | 事件网格将消息从服务总线主题发送到函数应用和逻辑应用。 |
Azure 服务总线到事件网格的集成 | 概述服务总线与事件网格的集成。 |
注意
当已启用 Geo-DR 的服务总线命名空间发生故障转移时,辅助命名空间不会向事件网格发出事件。 你需要手动添加辅助命名空间的事件网格订阅。
后续步骤
- 有关 Azure 事件网格的简介,请参阅什么是事件网格?
- 有关创建 Azure 事件网格订阅的详细信息,请参阅事件网格订阅架构。
- 有关将 Azure 事件网格与服务总线配合使用的详细信息,请参阅服务总线到事件网格集成概述。
- 尝试通过 Functions 或逻辑应用接收服务总线事件。