Пользовательская конечная точка не получает метаданные 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