Concurrency 如何阻止管道上的写入以重新配置管道?

Concurrency 如何阻止管道上的写入以重新配置管道?,concurrency,netty,Concurrency,Netty,我正在写一个服务器,它需要定期更改发送/接收消息的格式。当这种情况发生时,服务器应该发送一个通知,通知所有未来的消息都采用新格式,并读取所有以旧格式接收的消息,直到客户端发送其ack 我考虑保留一个由所有管道共享的解码器引用,并根据需要从外部重新配置它。在这种情况下,我担心并发性 如何确保管道在运行时不处理写入 我在做解码器? 以及如何确保通知 重新配置后是否处理第一条消息? 我看到的唯一其他方法是使用channel.write通过管道发送通知对象,在解码器中捕获对象,然后在转发通知消息时进行重

我正在写一个服务器,它需要定期更改发送/接收消息的格式。当这种情况发生时,服务器应该发送一个通知,通知所有未来的消息都采用新格式,并读取所有以旧格式接收的消息,直到客户端发送其ack

我考虑保留一个由所有管道共享的解码器引用,并根据需要从外部重新配置它。在这种情况下,我担心并发性

如何确保管道在运行时不处理写入 我在做解码器? 以及如何确保通知 重新配置后是否处理第一条消息? 我看到的唯一其他方法是使用channel.write通过管道发送通知对象,在解码器中捕获对象,然后在转发通知消息时进行重新配置。在这种情况下,管道中不应该有任何并发

这是更好/最先进的方法吗?
我决定用第二种方法。StateHandler捕获ConfigurationEvents并重新配置管道。不幸的是,这意味着我不能确定所有通道都使用相同的配置,因为重新配置和非常年轻的通道之间可能会发生竞争情况。但我很确定这对我来说无关紧要