我正在使用 netty 4 并利用 将ChannelPipeline
协议状态管理之类的东西与编解码器分开(例如)。这非常有效 - 我喜欢管道的单线程(当你想要它时)性质。
我还想管理断开/重新连接。
但是 - 当“断开连接”时 - 我想保留本来会发送给断开连接的家伙的消息。我想这样做,同时仍然使用网络特性(即在持久性之前仍然使用我的处理程序在管道中进行编码等)。
显然,这个(逻辑)管道超过了一个通道的生命周期(当重新连接发生时,我将使用登录消息中发送的会话名称并将所有状态拉回新通道的管道)。
显然,我可以在 netty 之外完成这一切——但我仍然希望在断开连接时继续使用管道进行编码等。目前我能想到的只是使用某种“/dev/null/”风格(自定义)通道,它在我们断开连接时会丢弃所有内容,并在断开连接时适当重建管道(我们将在其中切换这个“假”死消息通道)并重新连接,以及EventExecutorGroup
保持线程良好的自定义(即固定到“逻辑会话”状态 - 因此在通道之间移动)。这似乎有点“呃”:)
是否有任何现有的“模式”我没有看到记录在处理断开和重新连接之间的时间段同时保持状态和使用 netty 4 中的管道功能?