public class ChannelTrafficShapingHandler extends AbstractTrafficShapingHandler
AbstractTrafficShapingHandler的这种实现是用于信道流量整形,也就是说每个信道的带宽限制。
请注意, OutboundBuffer.setUserDefinedWritability(index, boolean)使用的索引是1 。
一般用途应该如下:
在您的管道中添加一个新的ChannelTrafficShapingHandler。
ChannelTrafficShapingHandler myHandler = new ChannelTrafficShapingHandler();
pipeline.addLast(myHandler);
请注意,此处理程序的管道覆盖范围为“1”,这意味着必须为每个新通道创建一个新的处理程序,因为计数器不能在所有通道之间共享。 。
其他参数可以像写入或读取限制(以字节/秒表示,其中0表示没有限制)或表示带宽的两次计算之间的延迟的检查间隔(以毫秒为单位)传递,因此doAccounting方法的回调(0意味着根本没有会计)。
值为0意味着不计入checkInterval。 如果您需要流量整形,但没有此类记帐,建议设置一个正值,即使该值较高,因为流量整形的精度取决于流量计算的时间段。 时间间隔越高,流量整形的精确度越低。 建议接近5或10分钟的值更高。
maxTimeToWait默认设置为15秒,允许指定时间整形的上限。
channel.isWritable()和channelWritabilityChanged(ctx)来处理可写性,或通过future.addListener(new GenericFutureListener())返回的未来通过ctx.write() 。 您还应该考虑在读取或写入操作时使用的对象大小与您所需的带宽相对匹配:例如,10KB / s的10 MB对象将导致突发效应,而1 MB / s的100 KB对象应该平滑由此TrafficShaping处理程序处理。
一些配置方法将被视为尽力而为,这意味着所有已安排的流量都不会改变,但仅适用于新的流量。
因此,这些方法的预期用途不会太频繁地使用,因此对流量整形配置也是如此。
ChannelHandler.SharablecheckInterval, DEFAULT_CHECK_INTERVAL, DEFAULT_MAX_TIME, maxTime, trafficCounter| Constructor and Description |
|---|
ChannelTrafficShapingHandler(long checkInterval)
使用默认最大时间创建一个新实例作为15000毫秒的延迟允许值并且没有限制。
|
ChannelTrafficShapingHandler(long writeLimit, long readLimit)
使用默认的“检查时间间隔”值1000毫秒和最大时间作为延迟允许值15000毫秒创建一个新实例。
|
ChannelTrafficShapingHandler(long writeLimit, long readLimit, long checkInterval)
使用默认最大时间创建一个新实例,作为延迟允许值15000毫秒。
|
ChannelTrafficShapingHandler(long writeLimit, long readLimit, long checkInterval, long maxTime)
创建一个新的实例。
|
| Modifier and Type | Method and Description |
|---|---|
void |
handlerAdded(ChannelHandlerContext ctx)
子类可以忽略这个方法。
|
void |
handlerRemoved(ChannelHandlerContext ctx)
子类可以忽略这个方法。
|
long |
queueSize() |
calculateSize, channelRead, channelRegistered, configure, configure, configure, doAccounting, getCheckInterval, getMaxTimeWait, getMaxWriteDelay, getMaxWriteSize, getReadLimit, getWriteLimit, isHandlerActive, read, setCheckInterval, setMaxTimeWait, setMaxWriteDelay, setMaxWriteSize, setReadLimit, setWriteLimit, submitWrite, toString, trafficCounter, userDefinedWritabilityIndex, writebind, close, connect, deregister, disconnect, flushchannelActive, channelInactive, channelReadComplete, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggeredensureNotSharable, isSharableclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitexceptionCaughtpublic ChannelTrafficShapingHandler(long writeLimit,
long readLimit,
long checkInterval,
long maxTime)
writeLimit - 0或以字节/秒为单位的限制
readLimit - 0或以字节/秒为单位的限制
checkInterval - 通道两次性能计算之间的延迟,如果不计算统计数据,则延迟0。
maxTime -
maxTime等待的最大延迟时间。
public ChannelTrafficShapingHandler(long writeLimit,
long readLimit,
long checkInterval)
writeLimit - 0或以字节/秒为单位的限制
readLimit - 0或以字节/秒为单位的限制
checkInterval - 通道两次性能计算之间的延迟,如果不计算统计数据,则延迟0。
public ChannelTrafficShapingHandler(long writeLimit,
long readLimit)
writeLimit - 0或以字节/秒为单位的限制
readLimit - 0或以字节/秒为单位的限制
public ChannelTrafficShapingHandler(long checkInterval)
checkInterval - 通道两次性能计算之间的延迟,如果不计算统计数据,则延迟0。
public void handlerAdded(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelHandlerAdapter
handlerAdded在界面
ChannelHandler
handlerAdded在课堂上
ChannelHandlerAdapter
java.lang.Exception
public void handlerRemoved(ChannelHandlerContext ctx) throws java.lang.Exception
ChannelHandlerAdapter
handlerRemoved ,界面
ChannelHandler
handlerRemoved在课堂上
ChannelHandlerAdapter
java.lang.Exception
public long queueSize()
Copyright © 2008–2018 The Netty Project. All rights reserved.