你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用事件网格对 Azure Maps 事件做出响应
Azure Maps 与 Azure 事件网格集成,这样,用户就可以向其他服务发送事件通知,并触发下游过程。 本文旨在帮助你配置业务应用程序来侦听 Azure Maps 事件。 这样,用户就可以采取可靠的、可缩放的和安全的方式来响应重要事件。 例如,用户可以生成应用程序在每当有设备进入地理围栏时更新数据库、创建票证,并发送电子邮件通知。
Azure 事件网格是一种完全托管的事件路由服务,它使用发布-订阅模型。 事件网格提供对 Azure 服务(如 Azure Functions 和 Azure 逻辑应用)的内置支持。 它可以使用 Webhook 将事件警报传递到非 Azure 服务。 有关受事件网格支持的事件处理程序的完整列表,请参阅 Azure 事件网格简介。
Azure Maps 事件类型
事件网格使用事件订阅将事件消息路由到订阅方。 Azure Maps 帐户发出以下事件类型:
事件类型 | 说明 |
---|---|
Microsoft.Maps.GeofenceEntered | 在接收到的坐标已从给定地理围栏的外部移动到内部时引发 |
Microsoft.Maps.GeofenceExited | 在接收到的坐标已从给定地理围栏的内部移动到外部时引发 |
Microsoft.Maps.GeofenceResult | 当地理围栏查询返回结果时引发,不管状态如何。 |
事件架构
以下示例显示 GeofenceResult 的架构:
{
"id":"451675de-a67d-4929-876c-5c2bf0b2c000",
"topic":"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Maps/accounts/{accountName}",
"subject":"/spatial/geofence/udid/{udid}/id/{eventId}",
"data":{
"geometries":[
{
"deviceId":"device_1",
"udId":"1a13b444-4acf-32ab-ce4e-9ca4af20b169",
"geometryId":"1",
"distance":999.0,
"nearestLat":47.609833,
"nearestLon":-122.148274
}
],
"expiredGeofenceGeometryId":[
],
"invalidPeriodGeofenceGeometryId":[
]
},
"eventType":"Microsoft.Maps.GeofenceResult",
"eventTime":"2018-11-08T00:52:08.0954283Z",
"metadataVersion":"1",
"dataVersion":"1.0"
}
使用事件的提示
处理 Azure Maps 地理围栏事件的应用程序应遵循以下建议的做法:
- 将多个订阅配置为将事件路由至同一事件处理程序。 不可假定事件均来自某个特定的源,这很重要。 始终检查消息主题,以确保该消息来自预期的源。
- 在响应标头中使用
X-Correlation-id
字段来了解对象的信息是否是最新的。 消息可能不按顺序到达,或者延迟达到。 - 在调用地理围栏 API 中的 GET 或 POST 请求(模式参数设置为
EnterAndExit
)时,会为地理围栏中其状态不同于以前的地理围栏 API 调用的每个几何图形生成“进入”或“退出”事件。
后续步骤
有关 Azure Maps 和架构支持的所有事件的详细信息,请参阅将 Azure Maps 用作事件网格源。
若要详细了解如何使用地理围栏功能来控制在构造站点进行的操作,请参阅: