2016-07-22 25 views
1

Ich benutze Netty, um ein Protokoll zu verarbeiten, dessen Nachrichten ein Feld variabler Länge in der Kopfzeile haben. Der LengthFieldBasedFrameDecoder erweist sich als perfekt für diese Anforderung.Kann dieselbe LengthFieldBasedFrameDecoder-Instanz von mehreren Kanälen verwendet werden?

Vorausgesetzt, dass dies für jeden Kanal vollständig identisch ist (die tatsächliche Verarbeitung der Inhalte erfolgt durch einen nachfolgenden Handler in der Pipeline), ist es threadsicher, einen Singleton dieser Klasse zu verwenden, anstatt einen neuen für jeden Kanal zu erstellen ?

Was passiert, wenn der Frame fragmentiert wird und wieder zusammengebaut werden muss, ob separate ByteBuf-Instanzen für jeden Channel vorhanden sind oder besteht die Gefahr, dass Daten beschädigt werden?

Danke

Antwort

3

Nein, Sie müssen eine neue Instanz pro Kanal erstellen. Alle Handler, die von mehreren Kanälen verwendet werden können, sind als @Sharable markiert.