Netty pipeline diferente por datagrama UDP

Tenemos un servidor que ya está implementado en TCP / IP, pero ahora también tenemos un requisito para que el protocolo sea compatible con UDP.

Cada datagrama UDP enviado contiene todo lo que necesito decodificar, por lo que es un sistema de respuesta y respuesta muy simple con datos en el datagrama separados por saltos de línea.

El código para el arranque cuando se inicia el servidor se muestra a continuación:

<code>    //SETUP UDP SERVER
    DatagramChannelFactory udpFactory = new NioDatagramChannelFactory(Executors.newCachedThreadPool());

    ConnectionlessBootstrap udpBootstrap = new ConnectionlessBootstrap(udpFactory);

    udpBootstrap.setOption("sendBufferSize", 65536);
    udpBootstrap.setOption("receiveBufferSize", 65536);
    udpBootstrap.setOption("receiveBufferSizePredictorFactory", new AdaptiveReceiveBufferSizePredictorFactory());

    udpBootstrap.setOption("broadcast", "true");
    udpBootstrap.setPipelineFactory(new ServerPipeLineFactoryUDP());
    udpBootstrap.bind(new InetSocketAddress(hostIp, 4000)); 
</code>

El código de la tubería es:

<code>class ServerPipeLineFactoryUDP implements ChannelPipelineFactory
{

    private final static ExecutionHandler EXECUTION_HANDLER = new ExecutionHandler(new OrderedMemoryAwareThreadPoolExecutor(ScorpionFMS.THREAD_POOL_COUNT, 0, 0));

    public ServerPipeLineFactoryUDP()
    {

    }

    @Override
    public ChannelPipeline getPipeline() throws Exception
    {

    ChannelPipeline pipeline = pipeline();
    pipeline.addLast("debugup", new DebugUpstreamHandler("UDP"));
    pipeline.addLast("debugdown", new DebugDownstreamHandler("UDP"));

    pipeline.addLast("framer", new DelimiterBasedFrameDecoder(256, Delimiters.lineDelimiter()));

    pipeline.addLast("decoder", new UDPRequestDecoder(true));
    pipeline.addLast("encoder", new StringEncoder());
    pipeline.addLast("executor", EXECUTION_HANDLER);
    pipeline.addLast("handler", new UDPRequestHandler(

    return pipeline;
    }
}
</code>

El problema que tengo es que cada datagrama usa la misma instancia de esta canalización (espero que cada datagrama use una nueva instancia de la tubería), por lo que todo el estado que almaceno mientras se procesa el contenido de un datagrama se guarda y el siguiente datagrama se usa también, (mientras que para TCP, cada conexión tendría su propio canal y, por lo tanto, su propia instancia de la tubería y su propio estado)

Sé que este es el comportamiento esperado de la lectura de la documentación, pero ¿existe alguna forma de forzar a Netty a recrear la tubería para cada datagrama? ¿O voy a hacer esto de una manera completamente equivocada?

Para decirlo de manera sucinta, quiero que cada datagrama tenga una nueva instancia de la tubería (lo mismo que tcp)

Respuestas a la pregunta(2)

Su respuesta a la pregunta