X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fimplementation%2Finmemory%2FInMemoryChatMessageService.java;h=5d5feb87845cfbd536ff6f8364b87583b01d63cc;hb=4f2a6dfe5a1c620ad795328853c1be71a2581771;hp=0345c0083c924358da556f95846252239397b7ec;hpb=803a9193c8b1ad1ec68f1818fc091291a60c8f4c;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/InMemoryChatMessageService.java b/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/InMemoryChatMessageService.java index 0345c008..5d5feb87 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/InMemoryChatMessageService.java +++ b/src/main/java/de/juplo/kafka/chat/backend/implementation/inmemory/InMemoryChatMessageService.java @@ -2,30 +2,41 @@ package de.juplo.kafka.chat.backend.implementation.inmemory; import de.juplo.kafka.chat.backend.domain.ChatMessageService; import de.juplo.kafka.chat.backend.domain.Message; +import de.juplo.kafka.chat.backend.implementation.StorageStrategy; import lombok.extern.slf4j.Slf4j; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import java.time.LocalDateTime; import java.util.LinkedHashMap; +import java.util.UUID; @Slf4j public class InMemoryChatMessageService implements ChatMessageService { + private final UUID chatRoomId; private final LinkedHashMap messages; - public InMemoryChatMessageService(Flux messageFlux) + public InMemoryChatMessageService(UUID chatRoomId) { log.debug("Creating InMemoryChatMessageService"); + this.chatRoomId = chatRoomId; messages = new LinkedHashMap<>(); - messageFlux + } + + + Mono restore(StorageStrategy storageStrategy) + { + Flux messageFlux = storageStrategy.readChatRoomData(chatRoomId); + + return messageFlux .doOnNext(message -> messages.put(message.getKey(), message)) - .then() - .doOnSuccess(empty -> log.info("Restored InMemoryChatMessageService")) + .count() + .doOnSuccess(count -> log.info("Restored InMemoryChatMessageService with {} messages", count)) .doOnError(throwable -> log.error("Could not restore InMemoryChatMessageService")) - .block(); + .then(); } @Override