tutorial tuning examples java udp netty

java - examples - netty performance tuning



TransmisiĆ³n UDP en netty 4.xx (1)

Creo que podrías tener un MessageToMessageDecoder / MessageToMessageEncoder que codificará / decodificará el DatagramPacket en un ByteBuf, que en realidad no es más que una llamada de DatagramPacket.data () para la decodificación (solo como ejemplo). Después del Encoder / Decoder puede agregar los otros ChannelHandlers habituales que manejarán la decodificación de ByteBuf a un Pojo.

Necesitamos transmitir un Objeto (Pojo) sobre el canal UDP usando Netty 4.0.0 binario.
En Netty 4.0.0, nos permite usar solo la clase DatagramPacket para enviar paquetes UDP.
Esta clase solo acepta ByteBuf como argumento.

¿Hay alguna otra manera, podemos enviar un Pojo sobre el canal UDP?

Para aclarar más, estábamos haciendo lo siguiente:

Inicializando la configuración para el canal UDP

ConnectionlessBootstrap udpBootstrap; udpBootstrap.setPipelineFactory(new ChannelPipelineFactory() { public ChannelPipeline getPipeline() throws Exception { return Channels.pipeline( new ObjectEncoder(), new ObjectDecoder(new NettyElementInfo()), new UDPBroadcastHandler()); } }); udpBootstrap.setOption("broadcast", true); //datagramChannel = (DatagramChannel) udpBootstrap.bind(new InetSocketAddress(udp_port)); datagramChannel = (DatagramChannel) udpBootstrap.bind(new InetSocketAddress(0));

Aquí, NettyElementInfo implementa las interfaces Serializable y ClassResolver. Intentamos transmitir este pojo de la siguiente manera:

channel.write(new NettyElementInfo(), new InetSocketAddress("255.255.255.255", 9555));

En el extremo receptor, estábamos haciendo lo mismo que arriba para la parte de Inicialización. Sin embargo, en el controlador estaban obteniendo el Pojo de la siguiente manera:

NettyElementInfo elementInfo = (NettyElementInfo)e.getMessage();

Esto se realizó con éxito utilizando netty 3.5.x

Cómo replicar este escenario usando Netty 4.0.0. Por favor envíenos el código de muestra.