X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fimplementation%2Fkafka%2FDataChannel.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fimplementation%2Fkafka%2FDataChannel.java;h=32a57206a061bbaa7c807649bdcb477a22c3c8f7;hb=900422dccb5a92fbceac34caa5e614b0d7f05ad7;hp=8dcc1bce8315323dc6e2e5f547087809351b9835;hpb=075fbbf0c290748fa8b6d684c145a2f1ab8cbe0d;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/DataChannel.java b/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/DataChannel.java index 8dcc1bce..32a57206 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/DataChannel.java +++ b/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/DataChannel.java @@ -144,6 +144,10 @@ public class DataChannel implements Channel, ConsumerRebalanceListener isShardOwned[partition] = true; this.currentOffset[partition] = currentOffset; + chatRoomData[partition] + .values() + .forEach(chatRoomData -> chatRoomData.activate()); + log.info( "Partition assigned: {} - loading messages: next={} -> current={}", partition, @@ -176,12 +180,15 @@ public class DataChannel implements Channel, ConsumerRebalanceListener partitions.forEach(topicPartition -> { int partition = topicPartition.partition(); - chatRoomData[partition] - .values() - .forEach(chatRoomData -> chatRoomData.close()); isShardOwned[partition] = false; nextOffset[partition] = consumer.position(topicPartition); + log.info("Partition revoked: {} - next={}", partition, nextOffset[partition]); + + chatRoomData[partition] + .values() + .forEach(chatRoomData -> chatRoomData.deactivate()); + channelMediator.shardRevoked(partition); }); } @@ -327,7 +334,10 @@ public class DataChannel implements Channel, ConsumerRebalanceListener void createChatRoomData(ChatRoomInfo chatRoomInfo) { - computeChatRoomData(chatRoomInfo.getId(), chatRoomInfo.getShard()); + ChatRoomData chatRoomData = computeChatRoomData( + chatRoomInfo.getId(), + chatRoomInfo.getShard()); + chatRoomData.activate(); } Mono getChatRoomData(int shard, UUID id)