Пожалуйста, просмотрите ниже контекст и помогите решить проблему
Я определяю ниже сообщение в device.proto
message DeviceConfiguration {
message Resolution {
uint32 width = 1;
uint32 height = 2;
}
string device_name = 1;
string brand_name = 2;
Resolution resolution = 3;
}
Затем скомпилируйте это сообщение на 2 языка: Nodejs (device_pb. js) и Python (device_pb2.py)
1. От Nodejs: отправьте вышеуказанное сообщение Кафке
const {DeviceConfiguration} = require("./device_pb")
const resolution = new DeviceConfiguration.Resolution();
resolution.setWidth(1280);
resolution.setHeight(960);
const deviceConfiguration = new DeviceConfiguration();
deviceConfiguration.setDeviceName("S6");
deviceConfiguration.setBrandName("samsung");
deviceConfiguration.setResolution(resolution);
let binaryEvent = deviceConfiguration.serializeBinary();
Наконец, используйте Kafka-узел для отправки значения binaryEvent в топ Кафки c
2. Из компонента Python: получить сообщение через kafka
- Здесь двоичное значение, полученное в python компонент
b'10,8,111 , 98,106,101,99,116,73,100,26,21,10,2,83,54,18,7,115,97,109,115,117,110,103,26,6,8,128,10,16,192,7 '
Затем я использую приведенный ниже код для десериализации сообщения, но оно выдает сообщение «Сообщение об ошибке анализа»
из device_pb2 import DeviceConfiguration
device = DeviceConfiguration ()
device.ParseFromString (message)
=> Поскольку я вижу, что ParseFromString не работает для указанного выше двоичного значения и выдает «Ошибка разбора» сообщение". Это работает только в том случае, если значение в байтах создается кодом SerializeToString python.
Обратите внимание: я могу десериализовать двоичный файл с помощью deserializeBinary (сделать его опубликованным c) в Nodejs, но подобной функции нет in device_pb2.py
Итак, могу ли я десериализовать сообщение в Python коде?
Большое спасибо.