import de.juplo.kafka.chat.backend.api.ChatRoomInfoTo;
import de.juplo.kafka.chat.backend.api.MessageTo;
+import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
return i++;
}
})
+ .delayElements(Duration.ofMillis(ThreadLocalRandom.current().nextLong(500, 1500)))
.map(i -> "Message #" + i)
.flatMap(message -> sendMessage(chatRoom, message)
- .delayElement(Duration.ofMillis(ThreadLocalRandom.current().nextLong(500, 1500)))
- .retryWhen(Retry.fixedDelay(10, Duration.ofSeconds(1))))
+ .retryWhen(Retry.fixedDelay(30, Duration.ofSeconds(1))))
.doOnNext(message ->
{
+ numSentMessages++;
sentMessages.add(message);
log.info(
"{} sent a message to {}: {}",
user,
e.getResponseBodyAsString(Charset.defaultCharset()));
})
+ .limitRate(1)
.takeUntil(message -> !running)
.doOnComplete(() -> log.info("TestWriter {} is done", user))
.parallel(1)
private final WebClient webClient;
- private final ChatRoomInfoTo chatRoom;
+ final ChatRoomInfoTo chatRoom;
final User user;
final List<MessageTo> sentMessages = new LinkedList<>();
volatile boolean running = true;
+ @Getter
+ private volatile int numSentMessages = 0;
TestWriter(Integer port, ChatRoomInfoTo chatRoom, String username)