Я хочу отправить множество udp-сообщений с помощью udp-клиента, как я могу этого добиться?

#reactor-netty

#reactor-netty

Вопрос:

Я хочу отправить множество udp-сообщений с помощью udp-клиента одновременно, но демонстрация отправляет только одно сообщение.как я мог этого добиться?

С демонстрационным кодом я могу отправлять только конечное количество сообщений.Я хочу использовать while (true) для отправки сообщения, как я могу этого добиться?

общедоступная статическая пустота main(String[] args) { Connection connection = UdpClient.create() .host(«localhost») .port(8080) .handle((udpInbound, udpOutbound) -> { return udpOutbound.sendString(Mono.just(«end»)).sendString(Mono.just(«end1»)).sendString(Mono.just(«end2»)); }) .ConnectNow(длительность.секунд (30)); соединение.onDispose() .block(); }

Ответ №1:

Вы можете использовать Flux вместо Mono , когда хотите отправить более одного сообщения. Один sendString(Flux) вызов лучше по сравнению с подходом со многими sendString(Mono) вызовами. В приведенном ниже примере используется Flux.interval так, чтобы у вас был бесконечный поток, который отправляет сообщения каждые 100 мс. Также, когда у вас бесконечный поток, вы должны переключаться на сброс для каждой стратегии

 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));