各位老大,小弟初学netty,遇到这么一个问题:
netty的一个channel中假如设置了上行处理器handlerA和handlerB, 假如A处理完是要丢给B继续处理的,但A处理完后的结果是一个自定义的Bean,处理器B需要的是这个Bean的内容,而不是原有event.getMessage()对象,请问如果把这个自定义的bean传给处理器B,是否需要重新new一个MessageEvent,然后调用ChannelHandlerContext的sendUpstream进行新的传递?
我觉得这种需求挺普遍的,但总找不到合适的例子,是否是我对用法理解有误?
引用来自“JavaGG”的答案
有办法的,按我的理解, 楼主应该是用两个handdler,一个用来解压,校验,解密,另外一个用来处理业务逻辑。
我以前通过ChannelHandlerContext 中的setAttachment , getAttachment来传递Bean,这样可以实现handler直间的对象传递
引用来自“三月鸟”的答案
有办法的,按我的理解, 楼主应该是用两个handdler,一个用来解压,校验,解密,另外一个用来处理业务逻辑。
我以前通过ChannelHandlerContext 中的setAttachment , getAttachment来传递Bean,这样可以实现handler直间的对象传递
引用来自“xinglu”的答案
引用来自“JavaGG”的答案
以上代码是 netty官方网站中 SimpleChannelUpstreamHandler 类的介绍信息中的。
根据最开始的一段,意思应该也可以 用几个handler的嘛。 netty 应该是 handler 等同于 mina 中的 hangder+filter 的功能吧。
super.handleUpstream()
so that other handler methods are invoked properly: