Буфер Netty Server считывает несколько сообщений одновременно - PullRequest
0 голосов
/ 03 апреля 2020

1. Текущая проблема

  • 1 Netty-клиент, 1 Netty-сервер
  • В Netty-клиенте 3 различных потока kafka отправка сообщения на netty-сервер с помощью 1 ChannelHandler
  • На стороне клиента netty, похоже, что обработчик канала отправляет сообщение каждого потока сразу. Но на стороне сервера netty кажется, что netty читает несколько сообщений, отправленных сразу из 3 потоков kafka.
  • Я проверил это, зарегистрировавшись: Изображение на стороне клиента , Журнал на стороне сервера изображение

2. Код

Код клиента Netty
public class ClientHandler extends ChannelInboundHandlerAdapter {

    ...

    @Override
    public void channelActive(ChannelHandlerContext ctx) {
        log.debug("channelActive");
        this.ctx = ctx;
    }

    public void sendMessage(String message) {
        log.info("Sent message: {}", message);
        ByteBuf messageBuffer = Unpooled.buffer();
        messageBuffer.writeBytes(message.getBytes());
        ctx.writeAndFlush(messageBuffer);
    }

Код сервера Netty
public class NettyServerHandler extends ChannelInboundHandlerAdapter {

    ...

    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) {
        NettyServer.ServerStatus.increaseAndGetTotalReadMsg();
        ByteBuf byteBuf = (ByteBuf)msg;
        log.info(byteBuf.toString(Charset.defaultCharset()));
        byteBuf.release();
    }
}

Здесь говорит о том, что writeAndFlush поточно-ориентирован, но, похоже, нет. Это нормальный случай или нет?

...