Мы используем IOT-концентратор для получения данных с устройств с поддержкой IP, так как данные растут, мы хотели сжать устройство с поддержкой IP и отправить его на iot-концентратор.мы используем потоковую аналитику Azure для обработки телеметрических сообщений.согласно документации Microsoft мы можем использовать поток Gzip для распаковки и возврата данных.
в потоковой аналитике, которую мы использовали ниже настроек Тип сжатия события: Gzip введите описание изображения здесь
мы пытаемся ниже код для сжатия:
string fltext = File.ReadAllText("input_new.txt");
var buffer = Encoding.UTF8.GetBytes(fltext);
Console.WriteLine("Before Converting message:" + buffer.Length);
MemoryStream ms = new MemoryStream();
using (var zip = new GZipStream(ms, CompressionLevel.Optimal, true))
{
zip.Write(buffer, 0, buffer.Length);
}
ms.Position = 0;
var compressed = new byte[ms.Length];
ms.Read(compressed, 0, compressed.Length);
var gzBuffer = new byte[compressed.Length];
Buffer.BlockCopy(compressed, 0, gzBuffer, 0, compressed.Length);
var fullyConverted = Convert.ToBase64String(gzBuffer);
Console.WriteLine("Before Converting message:" + gzBuffer.Length);
var deviceClient = DeviceClient.CreateFromConnectionString(deviceSpecificConnection);
var message = new Microsoft.Azure.Devices.Client.Message(gzBuffer);
deviceClient.SendEventAsync(message);
Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, gzBuffer.Length);
Task.Delay(5000);