Пользовательская конечная точка не получает метаданные IoT Hub

Когда мой IoT Hub направляет сообщение устройства во встроенную конечную точку "События", в событии содержатся метаданные сообщения (идентификатор сообщения, идентификатор устройства, время постановки в очередь и т. Д.). Когда то же сообщение направляется в мою пользовательскую конечную точку (концентратор событий), метаданные сообщения не содержатся в событии. Есть ли возможность пересылать метаданные сообщения IoT Hub на пользовательские конечные точки?

Примеры:

IoT Hub -> Конечная точка "События" -> Выборочный ввод при потоковой аналитике

{
    "type": "Flow",
    "payload": {
        "timestamp": "2018-08-02 08:05:11.991",
        "flow": 1
    },
    "EventProcessedUtcTime": "2018-08-02T08:06:04.3909310Z",
    "PartitionId": 1,
    "EventEnqueuedUtcTime": "2018-08-02T08:05:13.2180000Z",
    "IoTHub": {
        "MessageId": null,
        "CorrelationId": null,
        "ConnectionDeviceId": "...",
        "ConnectionDeviceGenerationId": "636657651873407150",
        "EnqueuedTime": "2018-08-02T08:05:13.0320000Z",
        "StreamId": null
    }
}

IoT Hub -> Custom Endpoint -> Event Hub -> Выборочный ввод при потоковой аналитике

{
    "type": "Flow",
    "payload": {
        "timestamp": "2018-08-02 05:41:37.714",
        "flow": 0
    },
    "EventProcessedUtcTime": "2018-08-02T05:53:58.3994321Z",
    "PartitionId": 1,
    "EventEnqueuedUtcTime": "2018-08-02T05:41:38.8890000Z"
}

1 ответ

Решение

Когда ваши данные поступают из потока событий концентратора событий, у вас есть доступ к следующим полям метаданных:

  • EventProcessedUtcTime
  • EventEnqueuedUtcTime
  • PartitionID

Как вы уже нашли. См. Этот документ: " Потоковые данные из концентраторов событий".

При использовании Event Hub в качестве конечной точки для маршрутов IoT Hub вы можете получить доступ к медаданным IoT Hub с помощью функции GetMetadataPropertyValue.

Вот пример:

Чтобы выполнить запрос из Event Hub с включенной IoT Routing,

SELECT 
GetMetadataPropertyValue(ehInput, '[EventHub].[IoTConnectionDeviceId]') AS myIoTDeviceId 
FROM ehInput
Другие вопросы по тегам