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