Netty — поделиться вложением между каналами

Я хочу поделиться объектом примерно между 20 каналами в Netty через вложение. бывший..

SharedStatsObj sso ...
ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port));
ChannelHandlerContext c = future.getChannel().getPipeline().getContext("handler")
c.setAttachment(sso);

Этот объект будет хранить статистику, такую ​​как отправленные команды, как долго мы были подключены, а также будет использоваться для подачи сигналов отдельным каналам для выполнения определенных действий. У кого-нибудь есть опыт в этом? Существуют ли какие-либо проблемы с потоками, кроме использования синхронизированных блоков при обновлении данных/доступе к данным? Любой совет будет принят с благодарностью!


person Pat R    schedule 18.04.2012    source источник


Ответы (1)


Если вы хотите разделить объект между каналами, введите его непосредственно в ChannelHandler или используйте статический экземпляр ChannelLocal.

Убедитесь, что ваш объект потокобезопасен!

person Norman Maurer    schedule 18.04.2012
comment
В частности, есть ли какая-то причина, по которой вы не прикрепите его непосредственно к каналу? Я взглянул на экземпляры ChannelLocal, но вложения кажутся быстрее и проще. - person Pat R; 19.04.2012