我想一次通过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() 。块(); }
答案 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));