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