Различные сообщения объединяются в ByteBuf Object при чтении его из библиотеки Netty через TCP - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть приложение, которое обрабатывает сообщения, которые имеют 3 различных формата, я использую Netty client для получения сообщений через TCP listener . Таким образом, проблема, с которой я сталкиваюсь, заключается в том, что для получения сообщений более TCP я должен использовать ByteBuf в своем классе декодера, поэтому сообщения объединяются одно за другим, и я не могу их разбить. Я искал по Inte rnet и обнаружил, что мы можем использовать LineBasedFrameDecoder , DelimeterBasedFrameDecoder или FixedLengthFieldDecoder , чтобы решить эту проблему, но проблема в моем сообщении, я не знаю У меня нет фиксированного размера, также я не могу использовать LineBasedFrameDecoder, потому что LineBasedFrameDecoder разбивает сообщения на основе новой строки, то есть '\ n' или '\ r', и в моих сообщениях также могут быть новые строки, поэтому LineBasedFrameDecoder не будет работать в этот сценарий, поскольку он даст частичное или половинное сообщение, также у меня нет никакого определенного c разделителя, из которого заканчиваются мои сообщения, и я не могу использовать DelimeterBasedFrameDecoder

Пожалуйста, предложите мне какой-то подход, чтобы решить эту проблему проблема. Кроме того, есть ли что-нибудь, что я могу добавить в свой конвейер для TCP, чтобы мой объект ByteBuf не содержал конкатенацию сообщений, и для каждого вызова метода декодирования у меня будет одно сообщение, чтобы я мог их легко проанализировать, как в случаях с UDP, поскольку они получают пакеты датаграмм для каждого отдельного сообщения.

Заранее спасибо.

...