你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用事件网格对 Azure Maps 事件做出响应

Azure Maps 与 Azure 事件网格集成,这样,用户就可以向其他服务发送事件通知,并触发下游过程。 本文旨在帮助你配置业务应用程序来侦听 Azure Maps 事件。 这样,用户就可以采取可靠的、可缩放的和安全的方式来响应重要事件。 例如,用户可以生成应用程序在每当有设备进入地理围栏时更新数据库、创建票证,并发送电子邮件通知。

Azure 事件网格是一种完全托管的事件路由服务,它使用发布-订阅模型。 事件网格提供对 Azure 服务(如 Azure FunctionsAzure 逻辑应用)的内置支持。 它可以使用 Webhook 将事件警报传递到非 Azure 服务。 有关受事件网格支持的事件处理程序的完整列表,请参阅 Azure 事件网格简介

Azure Event Grid functional model

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 用作事件网格源

若要详细了解如何使用地理围栏功能来控制在构造站点进行的操作,请参阅: