X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fpersistence%2Fkafka%2FChatRoomChannel.java;h=9ea23b13126afa753fc4290e54e7aa6ef7fc40aa;hb=5c338c58065988f7841c4ab9ee1b193e754da9b9;hp=ac44f9976e5ab42b338950ff2c72125b3db66906;hpb=cbc0ed5c9bf21fc08ca4312627342738e331c634;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/persistence/kafka/ChatRoomChannel.java b/src/main/java/de/juplo/kafka/chat/backend/persistence/kafka/ChatRoomChannel.java index ac44f997..9ea23b13 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/persistence/kafka/ChatRoomChannel.java +++ b/src/main/java/de/juplo/kafka/chat/backend/persistence/kafka/ChatRoomChannel.java @@ -9,22 +9,23 @@ import org.apache.kafka.clients.consumer.ConsumerRecords; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerRecord; import org.apache.kafka.common.TopicPartition; -import org.apache.kafka.common.errors.RecordDeserializationException; import org.apache.kafka.common.errors.WakeupException; import reactor.core.publisher.Mono; import java.time.*; import java.util.List; +import java.util.Optional; import java.util.UUID; +import java.util.concurrent.Callable; @RequiredArgsConstructor @Slf4j -public class ChatRoomChannel implements Runnable +public class ChatRoomChannel implements Callable> { private final String topic; - private final Consumer consumer; private final Producer producer; + private final Consumer consumer; private final ShardingStrategy shardingStrategy; private final ChatMessageChannel chatMessageChannel; private final Clock clock; @@ -69,7 +70,7 @@ public class ChatRoomChannel implements Runnable } @Override - public void run() + public Optional call() { consumer.assign(List.of(new TopicPartition(topic, 0))); @@ -92,9 +93,18 @@ public class ChatRoomChannel implements Runnable log.info("Received WakeupException, exiting!"); running = false; } + catch (Exception e) + { + log.error("Exiting abnormally!"); + return Optional.of(e); + } } + + log.info("Exiting normally"); + return Optional.empty(); } + void createChatRoom(ChatRoomInfo chatRoomInfo) { UUID id = chatRoomInfo.getId();