Netty在rocketmq中的实现 二 NettyRemotingClient

来源:互联网 发布:java date 格式化输出 编辑:程序博客网 时间:2024/06/04 06:11

昨天我们学习了 NettyRemotingServer的实现,今天来学习client的实现


 public void start() {        this.defaultEventExecutorGroup = new DefaultEventExecutorGroup(//                nettyClientConfig.getClientWorkerThreads(), //                new ThreadFactory() {                    private AtomicInteger threadIndex = new AtomicInteger(0);                    @Override                    public Thread newThread(Runnable r) {                        return new Thread(r, "NettyClientWorkerThread_" + this.threadIndex.incrementAndGet());                    }                });        Bootstrap handler = this.bootstrap.group(this.eventLoopGroupWorker).channel(NioSocketChannel.class)//                //                .option(ChannelOption.TCP_NODELAY, true)                //                .option(ChannelOption.SO_KEEPALIVE, false)                //                .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, nettyClientConfig.getConnectTimeoutMillis())                //                .option(ChannelOption.SO_SNDBUF, nettyClientConfig.getClientSocketSndBufSize())                //                .option(ChannelOption.SO_RCVBUF, nettyClientConfig.getClientSocketRcvBufSize())                //                .handler(new ChannelInitializer<SocketChannel>() {                    @Override                    public void initChannel(SocketChannel ch) throws Exception {                        ch.pipeline().addLast(//                                defaultEventExecutorGroup, //                                new NettyEncoder(), //                                new NettyDecoder(), //                                new IdleStateHandler(0, 0, nettyClientConfig.getClientChannelMaxIdleTimeSeconds()), //                                new NettyConnetManageHandler(), //                                new NettyClientHandler());                    }                });        this.timer.scheduleAtFixedRate(new TimerTask() {            @Override            public void run() {                try {                    NettyRemotingClient.this.scanResponseTable();                } catch (Exception e) {                    log.error("scanResponseTable exception", e);                }            }        }, 1000 * 3, 1000);        if (this.channelEventListener != null) {            this.nettyEventExecuter.start();        }




0 0
原创粉丝点击