0

我必须在 netty 通道上发送不同类型的消息,并且在发送之前对这些消息进行编码。我OneToOneEncoder在 netty 通道中注册了多个 s,每个都encode应该作用于单一类型的消息。我检查味精的类型,如果它是正确类型的编码器进行编码,或者如果它不是特定类型(编码器的),则返回味精(不进行转换)。这是一种有效的设计方法吗?

我面临的问题是:有时这会导致各种下游异常(在解码器中),例如 IndexOutOfBounds。

更困难的是,有时它可以正常工作。我确信在编码/解码中有些东西搞砸了。到底是什么让我难以捉摸。这里有什么明显的错误吗?

编辑:我的问题是关于一般设计方法..如果这是正确的,那么我可以自己解决代码中的错误..

4

1 回答 1

1

您可以在 ChannelPipeline 中拥有多个 OneToOneEncoder。只要确保这些是线程安全的,因为下游事件可以从任何线程发送。

于 2012-05-14T12:30:34.887 回答