@UnstableApi public final class RedisBulkStringAggregator extends MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
ChannelHandler将BulkStringHeaderRedisMessage及其随后的BulkStringRedisContent合并为一个FullBulkStringRedisMessage ,但没有BulkStringRedisContent 。
当你不想照顾传输编码被“分块”的RedisMessage时,它非常有用。
在ChannelPipeline之后的RedisDecoder之后插入此处理程序:
ChannelPipeline p = ...;
...
p.addLast("encoder", new RedisEncoder());
p.addLast("decoder", new RedisDecoder());
p.addLast("aggregator", new RedisBulkStringAggregator());
...
p.addLast("handler", new HttpRequestHandler());
请注意,您需要在ChannelPipeline的RedisBulkStringAggregator之前安装 RedisEncoder 。
ChannelHandler.Sharable| Constructor and Description |
|---|
RedisBulkStringAggregator()
创建一个新的实例。
|
| Modifier and Type | Method and Description |
|---|---|
protected FullBulkStringRedisMessage |
beginAggregation(BulkStringHeaderRedisMessage start, ByteBuf content)
根据指定的开始消息和指定的内容创建新的聚合消息。
|
protected boolean |
closeAfterContinueResponse(java.lang.Object msg)
确定在写入
MessageAggregator.newContinueResponse(Object, int, ChannelPipeline)的结果后是否应该关闭通道。
|
protected boolean |
ignoreContentAfterContinueResponse(java.lang.Object msg)
确定当前请求/响应的所有对象是否应该被忽略。
|
protected boolean |
isAggregated(RedisMessage msg)
当且仅当指定的消息已被聚合时才返回
true 。
|
protected boolean |
isContentLengthInvalid(BulkStringHeaderRedisMessage start, int maxContentLength)
确定消息
start的内容长度是否已知,并且是否大于
maxContentLength 。
|
protected boolean |
isContentMessage(RedisMessage msg)
当且仅当指定的消息是内容消息时返回
true 。
|
protected boolean |
isLastContentMessage(BulkStringRedisContent msg)
当且仅当指定的消息是最后一个内容消息时才返回
true 。
|
protected boolean |
isStartMessage(RedisMessage msg)
当且仅当指定的消息是开始消息时返回
true 。
|
protected java.lang.Object |
newContinueResponse(BulkStringHeaderRedisMessage start, int maxContentLength, ChannelPipeline pipeline)
如有必要,返回指定开始消息的'continue response'。
|
acceptInboundMessage, aggregate, channelInactive, channelReadComplete, ctx, decode, finishAggregation, handleOversizedMessage, handlerAdded, handlerRemoved, isHandlingOversizedMessage, maxContentLength, maxCumulationBufferComponents, setMaxCumulationBufferComponentschannelReadchannelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggeredensureNotSharable, isSharableprotected boolean isStartMessage(RedisMessage msg) throws java.lang.Exception
MessageAggregator
true 。
通常情况下,此方法作为return声明与instanceof :
return msg instanceof MyStartMessage;
isStartMessage
MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
java.lang.Exception
protected boolean isContentMessage(RedisMessage msg) throws java.lang.Exception
MessageAggregator
true 。
通常情况下,此方法以return语句与instanceof :
return msg instanceof MyContentMessage;
isContentMessage在课程
MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
java.lang.Exception
protected boolean isLastContentMessage(BulkStringRedisContent msg) throws java.lang.Exception
MessageAggregator
true 。
通常情况下,此方法作为return单个return语句与instanceof :
return msg instanceof MyLastContentMessage;
或用instanceof和布尔型字段检查:
return msg instanceof MyContentMessage && msg.isLastFragment();
isLastContentMessage在课程
MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
java.lang.Exception
protected boolean isAggregated(RedisMessage msg) throws java.lang.Exception
MessageAggregator
true 。
如果此方法返回true ,则此处理程序将仅将消息按true转发给下一个处理程序。
isAggregated在课程
MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
java.lang.Exception
protected boolean isContentLengthInvalid(BulkStringHeaderRedisMessage start, int maxContentLength) throws java.lang.Exception
MessageAggregator
start的内容长度是否已知,并且是否大于
maxContentLength 。
isContentLengthInvalid在课程
MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
start - 可能指示内容长度的消息。
maxContentLength - 允许的最大内容长度。
true如果消息start的内容长度已知,并且它大于maxContentLength 。
否则为false 。
java.lang.Exception
protected java.lang.Object newContinueResponse(BulkStringHeaderRedisMessage start, int maxContentLength, ChannelPipeline pipeline) throws java.lang.Exception
MessageAggregator
newContinueResponse在课程
MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
null如果没有消息要发送
java.lang.Exception
protected boolean closeAfterContinueResponse(java.lang.Object msg)
throws java.lang.Exception
MessageAggregator
MessageAggregator.newContinueResponse(Object, int, ChannelPipeline)的结果后,确定通道是否应该关闭。
closeAfterContinueResponse在课程
MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
msg - 来自
MessageAggregator.newContinueResponse(Object, int, ChannelPipeline)的返回值。
true如果在写入MessageAggregator.newContinueResponse(Object, int, ChannelPipeline)的结果后关闭通道。
否则为false 。
java.lang.Exception
protected boolean ignoreContentAfterContinueResponse(java.lang.Object msg)
throws java.lang.Exception
MessageAggregator
MessageAggregator.isContentMessage(Object)返回true时,消息将不再被忽略。
ignoreContentAfterContinueResponse在课程
MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
msg -从返回值
MessageAggregator.newContinueResponse(Object, int, ChannelPipeline) 。
true如果当前请求/响应的所有对象都应该被忽略。
否则为false 。
java.lang.Exception
protected FullBulkStringRedisMessage beginAggregation(BulkStringHeaderRedisMessage start, ByteBuf content) throws java.lang.Exception
MessageAggregator
beginAggregation在课程
MessageAggregator<RedisMessage,BulkStringHeaderRedisMessage,BulkStringRedisContent,FullBulkStringRedisMessage>
java.lang.Exception
Copyright © 2008–2018 The Netty Project. All rights reserved.