我想通过udp客户端发送大量udp消息,如何实现?

时间:2019-04-08 10:10:14

标签: reactor-netty

我想一次通过udp客户端发送大量udp消息,但是演示版仅发送一条消息。我如何实现?

使用演示代码,我只能发送有限数量的消息。我想使用while(true)来发送消息,我如何实现呢?

public static void main(String [] args){         连接连接=                 UdpClient.create()                         .host(“本地主机”)                         。端口(8080)                         .handle((udpInbound,udpOutbound)-> {                              返回udpOutbound.sendString(Mono.just(“ end”))。sendString(Mono.just(“ end1”))。sendString(Mono.just(“ end2”)));                         })                         .connectNow(Duration.ofSeconds(30));        connection.onDispose()                 。块();     }

1 个答案:

答案 0 :(得分:0)

要发送多个消息时,可以使用Flux代替Mono。 与具有许多sendString(Flux)调用的方法相比,一个sendString(Mono)调用更好。 下面的示例使用Flux.interval,以便您有无限的流每100毫秒发出一次消息。同样,当您有无限流时,也必须切换到flush on each strategy

Connection connection =
        UdpClient.create()
                 .host("localhost")
                 .port(8080)
                 .handle((udpInbound, udpOutbound) ->
                         udpOutbound.options(NettyPipeline.SendOptions::flushOnEach)
                                    .sendString(Flux.interval(Duration.ofMillis(100))
                                                    .map(l -> l + "")))
                 .connectNow(Duration.ofSeconds(30));