Недопустимый контейнер объекта Avro в потоке.Заголовок не может быть распознан.Разобрать сообщение в хранилище BLOB-объектов? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть устройства, которые отправляют сообщения в IOT Hub.Я использую маршрутизацию функцию IoT Hub для маршрутизации сообщений в хранилище BLOB-объектов.

Я вижу, что все сообщения достигают Blob хранилища.Но он хранится в добавленном формате.все сообщения добавляются одно за другим.

Я понимаю, что мы можем настроить chunk size и frequency, но мое требование состоит в том, чтобы хранить одно сообщение каждое в одном BLOB-объекте.Возможно ли это?

Или

Как мне проанализировать каждое сообщение на основе метки времени?

Вот авро-сообщение

 Objavro.codecnullavro.schema�{"type":"record","name":"Message","namespace":"Microsoft.Azure.Devices","fields":

Вот код функции Azure

 using (var reader = AvroContainer.CreateGenericReader(myBlob))
        {
            while (reader.MoveNext())
            {
                foreach (dynamic record in reader.Current.Objects)
                {
                    var bodyText = Encoding.UTF8.GetString(record.Body);
                    log.LogInformation($"AvroRecord = {bodyText}");
                }
            }
        }

Но я получаю такую ​​ошибку

Недопустимый контейнер объекта Avro в потоке.Заголовок не может быть распознан.

1 Ответ

0 голосов
/ 25 февраля 2019

Но он хранится в добавленном формате.все сообщения добавляются один за другим.

Какой тип BLOB-объекта вы создали как: блок, добавление или блок страницы?

https://docs.microsoft.com/en-us/rest/api/storageservices/understanding-block-blobs--append-blobs--and-page-blobs

...