草庐IT

Netty-NIO

全部标签

swift - ChannelInboundHandler (Swift-NIO) 中的 writeDataUnsupported

我正在尝试制作一个简单的echoUDP服务器,它发回所有以UTF8字符串为前缀的传入数据报。在我试图达到这个目标的过程中,我成功地发回了传入的数据,但是当我尝试用字符串作为前缀时:“Yousent:”,我得到一个错误writeDataUnsupported这是我的代码:我制作了一个名为Echo的ChannelInboundHandler它所做的只是:对于每个传入的数据报,它发送字符串"Yousent:"和然后是传入数据报的数据。finalclassEcho:ChannelInboundHandler{typealiasInboundIn=ByteBuffertypealiasOutbo

java - 将 io.netty.buffer.ByteBuf 转换为 java.nio.ByteBuffer 的有效方法

我遇到了这个查询:CreateaByteBufinNetty4.0关于从byte[]到ByteBuf和ByteBuffer到ByteBuf的转换。我很好奇以其他方式了解转换:io.netty.buffer.ByteBuf到java.nio.ByteBuffer以及如何在最少/不复制的情况下高效地做到这一点?我做了一些阅读,经过反复试验,我发现这种转换它的效率低下的方法(有两份)://io.netty.handler.codec.http.FullHttpRequestfullHttpRequest;ByteBufconByteBuf=fullHttpRequest.content();

java - Instrument Netty 的 EventLoop 用于确定性执行计划任务

我想检测Netty的EventLoop以便:以确定的顺序运行任务。捕获计划任务的截止日期。快进虚拟时钟,触发截止任务的执行。我知道EmbeddedChannel并在一些测试中使用它。但我想要的是介于单元测试和集成测试之间的东西,对某些极端情况仍然视而不见。断连重连和ping场景大量使用定时任务。我可以添加具有巨大延迟的确定性,但我不希望我的测试等待几秒钟或更长时间。所以检测Netty的EventLoop看起来像是解决方案。我已经编写了至少对我来说有意义的代码。我修改ScheduledFutureTask#nanoTime以返回我的值。我派生了NioEventLoopGroup,所以我捕

java - Netty 处理大负载的能力

我在我的开源项目中使用ApacheMINA。但是,我遇到了性能障碍,它无法处理从移动设备上传到服务器的大量有效负载。我收到内存不足错误。我从未使用过Netty,并希望将MINA与Netty交换。我想问Netty团队的问题是Netty在大量传入有效载荷负载下的表现如何。在我的性能测试中,我使用1000个并发设备生成负载,每个设备发送1MByte大小的有效负载。它往往会在5分钟内生成1GIG的上传数据。此负载往往会损坏MINA。Netty能否支持这种负载等等。非常感谢您对此的意见。顺便说一句:我确实使用JProfiler分析了应用程序。它确实指出MINA堆栈是罪魁祸首。我什至完全断开了服务

java - 为什么 NIO.2 FileVisitor 类型是通用的?

我正在研究JavaNIO.2及其文件操作,目前我正在研究文件树遍历函数和类。NIO.2FileVisitorAPI很棒,很遗憾这样的东西是最近才添加到JavaSE中的,而不是十年前。然而,有些事情让我有点困扰:制作FileVisitor有什么意义?接口(interface)通用?网络上的每个示例都展示了如何将它与Files.walkFileTree()一起使用这意味着我们正在使用FileVisitor类型。但除了Path之外,我看不出此接口(interface)有任何用途。.好吧,可能可以使用FileVisitor遍历其他类型的树(内存中的树?),但这感觉不对:此接口(interfac

java - Netty 以 100% CPU 运行

我看到过其他关于此问题的引用,例如here和here,尽管这些引用了不同版本的Netty。使用4.0分支(4.0.29)和5.0alpha分支(5.0-Alpha3)中的最新版本进行了尝试。本地(非Linux)jdk1.8.040,很好。使用javajdk1.8.025-b17的远程(Linux)获得100%cpu。Linux内核版本2.6.32。尝试使用EpollEventLoopGroup();试过打电话workerGroup=newNioEventLoopGroup();workerGroup.rebuildSelectors();有人可以提供任何建议吗?我在不同版本的Netty

java - 使用 WriteTimeoutHandler 在 Netty 中实现保活消息

我正在使用Netty3.2.7。我正在尝试在我的客户端中编写功能,以便如果在一定时间(比如30秒)后没有写入任何消息,则会向服务器发送一条“保持Activity状态”消息。经过一些挖掘,我发现WriteTimeoutHandler应该能让我做到这一点。我在这里找到了这个解释:https://issues.jboss.org/browse/NETTY-79.Netty文档中给出的例子是:publicChannelPipelinegetPipeline(){//Anexampleconfigurationthatimplements30-secondwritetimeout:returnC

java - 非阻塞 (NIO) 读取行

我需要使用java.nio逐行读取文件,但是nio没有像readline()这样的方法一次阅读一个完整的行。有哪些解决方案? 最佳答案 我知道你们不喜欢限制,但万一问的人无权访问IO包或由于某种原因不允许导入它,最佳答案没有帮助...完全没有IO的两种方法:java.nio.file.Files.lines,返回一个行流,它是.util包的一部分,而不是像bufferedReader那样的.io包。java.nio.file.Files.readAllLines,返回可迭代的行集合。继续使用迭代器或foreach来提取一行。干杯

Java.nio channel 和 TLS

如何使用TLS保护JavaSocketChannel、ServerSocketChannel或者甚至是DatagramChannel?我知道有一些框架(#1#2)宣传能够,但我想知道是否可以单独使用纯Java标准库来实现这一点。 最佳答案 您需要使用SSLEngine,如Non-blockingI/OwithSSLEngine中所述.您提到的图书馆使用它或使用使用它的图书馆。(请注意,这是出了名的难用。)您可能会发现这些链接很有趣:Thisanswer(其中还包含指向书籍章节的链接)。NotesfromJean-FrançoisAr

java - 监控 Netty 事件循环队列的大小

我们已经实现了对Netty事件循环队列的监控,以了解我们的一些Netty模块的问题。monitor使用io.netty.util.concurrent.SingleThreadEventExecutor#pendingTasks方法,对大部分模块有效,但是对于一个每秒处理几千个HTTP请求的模块就好像挂了,或者非常慢。我现在意识到文档严格指定这可能是一个问题,我觉得很蹩脚......所以我正在寻找另一种方法来实现这个监视器。你可以在这里看到旧代码:https://github.com/outbrain/ob1k/blob/6364187b30cab5b79d64835131d9168c