Попытка обработать сообщение, полученное в байтах, с помощью Google Protobuf, но иногда появляется сообщение «Тег конечной группы протокола не соответствует ожидаемому тегу» - PullRequest
0 голосов
/ 06 мая 2019

Мы обрабатываем сообщения, полученные из очереди, которая находится в byte[]. И обрабатывает их, используя google Protobuf-java-2.6.1.jar, вызывая mergeFrom из com.google.protobuf.AbstractMessage, что, в свою очередь, вызывает com.google.protobuf.CodedInputStream.

Иногда сообщения успешно обрабатываются, но иногда выдают InvalidProtocolBufferException.invalidTag().

Я понимаю, что "Группы в protobuf записываются как начальная / конечная числовая пара", но, как мы получаем сообщения в byte[], как мы можем убедиться, каковы начальные и конечные теги и какой конечный тег группы не соответствует ожидаемому тегу?

Иногда одно и то же сообщение успешно обрабатывается на локальном компьютере с Windows, но такое же сообщение не выполняется на компьютере с Linux.

Message.Builder builder = getMessageBuilder(messageType);
ExtensionRegistry registry = ExtensionRegistry.newInstance();
Message parsedMessage = builder.mergeFrom(message, registry).build();`  
  • сообщение является байтом [].
  • 3-я строка выдает исключение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...