X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2FTestWriter.java;h=61516b0da345191ffe6904f7b2adf68101d10b44;hb=1d7eef985c801d0a0fbb9b60cb7015b4e559aed9;hp=559cd3600e4dd27d4adc7097e5b5bfebf2e10e75;hpb=97931a75f37e8e122a33f932b05380a1b63a6caf;p=demos%2Fkafka%2Fchat diff --git a/src/test/java/de/juplo/kafka/chat/backend/TestWriter.java b/src/test/java/de/juplo/kafka/chat/backend/TestWriter.java index 559cd360..61516b0d 100644 --- a/src/test/java/de/juplo/kafka/chat/backend/TestWriter.java +++ b/src/test/java/de/juplo/kafka/chat/backend/TestWriter.java @@ -9,6 +9,7 @@ import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClientResponseException; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import reactor.core.scheduler.Schedulers; import reactor.util.retry.Retry; import java.nio.charset.Charset; @@ -20,12 +21,11 @@ import java.util.concurrent.ThreadLocalRandom; @Slf4j -public class TestWriter implements Runnable +public class TestWriter { - @Override - public void run() + public Mono run() { - Flux + return Flux .fromIterable((Iterable) () -> new Iterator<>() { private int i = 0; @@ -63,8 +63,12 @@ public class TestWriter implements Runnable user, e.getResponseBodyAsString(Charset.defaultCharset())); }) - .then() - .block(); + .limitRate(1) + .takeUntil(message -> !running) + .doOnComplete(() -> log.info("TestWriter {} is done", user)) + .parallel(1) + .runOn(Schedulers.parallel()) + .then(); } private Mono sendMessage( @@ -97,8 +101,8 @@ public class TestWriter implements Runnable private final WebClient webClient; private final ChatRoomInfoTo chatRoom; - private final User user; + final User user; final List sentMessages = new LinkedList<>(); volatile boolean running = true;