深入浅出Netty之四 Client请求处理
- // 初始化Bootstrap和NioClientSocketChannelFactory,这一步将启动nioWorker线程,并初始化NioClientSocketPipelineSink,并将Boss线程创建
- ClientBootstrap bootstrap = new ClientBootstrap(
- new NioClientSocketChannelFactory(
- Executors.newCachedThreadPool(),
- Executors.newCachedThreadPool()));
- // 用户自定义的pipeline工厂
- bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
- public ChannelPipeline getPipeline() throws Exception {
- return Channels.pipeline(
- new EchoClientHandler(firstMessageSize));
- }
- });
- // 异步创建连接
- ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port));
- //等待连接关闭
- future.getChannel().getCloseFuture().awaitUninterruptibly();
- // 关闭资源,线程池等
- bootstrap.releaseExternalResources();
// 初始化Bootstrap和NioClientSocketChannelFactory,这一步将启动nioWorker线程,并初始化NioClientSocketPipelineSink,并将Boss线程创建ClientBootstrap bootstrap = new ClientBootstrap(new NioClientSocketChannelFactory(Executors.newCachedThreadPool(),Executors.newCachedThreadPool()));// 用户自定义的pipeline工厂bootstrap.setPipelineFactory(new ChannelPipelineFactory() {public ChannelPipeline getPipeline() throws Exception {return Channels.pipeline(new EchoClientHandler(firstMessageSize));}});// 异步创建连接ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port));//等待连接关闭future.getChannel().getCloseFuture().awaitUninterruptibly();// 关闭资源,线程池等bootstrap.releaseExternalResources();
- public ChannelFuture connect(final SocketAddress remoteAddress, final SocketAddress localAddress) {
- ......
- //拿用户自定义的pipeline
- ChannelPipeline pipeline;
- try {
- pipeline = getPipelineFactory().getPipeline();
- } catch (Exception e) {
- throw new ChannelPipelineException("Failed to initialize a pipeline.", e);
- }
- // 从ChannelFactory中,创建Channel,对于client来说factory是NioClientSocketChannelFactory,Channel是NioClientSocketChannel
- Channel ch = getFactory().newChannel(pipeline);
- // 通过channel连接
- return ch.connect(remoteAddress);
- }
public ChannelFuture connect(final SocketAddress remoteAddress, final SocketAddress localAddress) {......//拿用户自定义的pipelineChannelPipeline pipeline;try {pipeline = getPipelineFactory().getPipeline();} catch (Exception e) {throw new ChannelPipelineException("Failed to initialize a pipeline.", e);}// 从ChannelFactory中,创建Channel,对于client来说factory是NioClientSocketChannelFactory,Channel是NioClientSocketChannelChannel ch = getFactory().newChannel(pipeline);// 通过channel连接return ch.connect(remoteAddress);}
- public SocketChannel newChannel(ChannelPipeline pipeline) {
- return new NioClientSocketChannel(this, pipeline, sink, sink.nextWorker());
- }
public SocketChannel newChannel(ChannelPipeline pipeline) {return new NioClientSocketChannel(this, pipeline, sink, sink.nextWorker());}
转载于:https://blog.51cto.com/daheyuan/1140093
深入浅出Netty之四 Client请求处理相关推荐
- gateway网关调用报 reactor.netty.http.client.HttpClient.chunkedTransfer(Z)Lreactor/netty/http/client/HttpC
reactor.netty.http.client.HttpClient.chunkedTransfer(Z)Lreactor/netty/http/client/HttpClient; 这个错误是因 ...
- 【问题归纳】开启gateway网关调用报错: reactor.netty.http.client.HttpClient.chunkedTransfer(Z)L
开启 gateway 网关报错reactor.netty.http.client.HttpClient.chunkedTransfer(Z)Lreactor/netty/http/client/Htt ...
- Connection prematurely closed BEFORE response reactor.netty.http.client.PrematureCloseException: Co
一.最近在开发网关系统,就在感觉万事大吉可以上线的时候发现了如下的错误(这个是我在配置rabbitmq访问多个服务时发现的) Connection prematurely closed BEFORE ...
- Netty入门教程——深入浅出Netty
在这里我们主要从TCP应用部分讲述 Netty 的架构体系. 它涉及到的内容主要分为三个部分 : bootstrap, channel, eventLoop. bootstrap 主要负责服务建立与发 ...
- 4、netty编写http服务器、增加压缩支持、netty编写client、netty添加SL/TLS保护https支持
注:源代码来自享学课堂,学习之后所做笔记,方便回顾,也给大家一个参考 目录 1 netty编写http服务器 1.1 主函数 1.2 ServerHandlerInit 1.3 服务端自定义BusiH ...
- Netty之四种常用 IO 模型
四种常用 IO 模型: 同步阻塞 BIO: 最简单的 IO 模型,用户线程在读写时被阻塞. 数据拷贝指请求到的数据先存放在内核空间, 然后从内核空间拷贝至程序的缓冲区. 用户线程在 IO 过程中被阻塞 ...
- 一篇文章让你彻底了解什么叫Netty!大牛看了直呼内行!
作者:java蜜蜜 链接:https://www.jianshu.com/p/1369b30b9f99 一.Netty到底是什么 1.从HTTP说起 有了Netty,你可以实现自己的HTTP服务器,F ...
- netty websocket客户端_Websocket操作字节序 之 服务端
Websocket在JavaScript中操作字节序 之 客户端 在上一篇文章中,把页面的websocket编码写好了,那么服务端又该如何实现呢?由于该文是在上上篇demo中修改的,所以不全的代码还请 ...
- netty半包粘包 处理_老王:Netty到底是个什么鬼?有没有简单的理解方式?
前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 作者:lyowish 来源:http://1t.click/7RY # 从HTTP说起 有了Netty,你可以实现自己的HTTP服 ...
最新文章
- 程序员创业前要做哪些准备?
- 顶点(vertexs) 图元(primitives) 片元(fragments片断) 像素(pixels)
- 物联网助推超市转型之具体应用分析
- php双向通信,RSA + AES 双向通信加密
- 20172303 2017-2018-2 《程序设计与数据结构》第4周学习总结
- B. 重载技术(overloading)
- 自定义控件--实现步骤
- Nodejs之http模块详解
- JSON语法之JSON键/值对
- Unity 碰撞器和触发器的理解
- 团队-爬虫豆瓣top250项目-模块开发过程
- ipconfig默认网关为空_网络工程师之IPCONFIG命令详解
- 空卡安装设置树莓派4B并安装opencv+QT
- Race Condition是什么
- vue中怎么点击修改文字_怎么拍照识别文字?什么软件可以识别照片中文字?
- 网际风全推数据接口_网际风数据接口飞狐交易师版简要说明.doc
- 轻松记录南极最美丽风景 有TA就已经足够
- iOS 答题功能实现
- 兰燕-杨平平的需求建议
- Mac中Android Studio使用内存调整方法
热门文章
- java文件没反应_Java实现文件点击没反应的方法
- 计算机科学与技术分享会,“相伴成长,绘梦未来”——计算机科学学院计算机科学与技术专业举办交流分享会...
- 网络库urillib3
- 【存储知识学习】第八章-Fibre Channel协议《大话存储》阅读笔记
- 信息系统项目管理师需要准备多久?备考技巧分享
- web.xml配置详细
- Leaflet中使用leaflet.easyPrint插件实现打印效果
- VSCode来绘制流程图真是得心应手
- Cordova创建你的第一个App
- 在Flutter中设置更好的Logging的指南