Browse Source

TbQueueConsumerTask::awaitCompletion after launchConsumer to provide a fully async repartition experience

pull/10728/head
Sergey Matvienko 2 years ago
parent
commit
5d7dc19452
  1. 4
      application/src/main/java/org/thingsboard/server/service/queue/ruleengine/TbRuleEngineQueueConsumerManager.java

4
application/src/main/java/org/thingsboard/server/service/queue/ruleengine/TbRuleEngineQueueConsumerManager.java

@ -434,6 +434,8 @@ public class TbRuleEngineQueueConsumerManager {
consumers.get(tpi).initiateStop();
});
List<TbQueueConsumerTask> removedTasks = removedPartitions.stream()
.map(consumers::remove).toList();
// ctx.getQueueAdmin().createTopicIfNotExists();
addedPartitions.forEach((tpi) -> {
@ -444,6 +446,8 @@ public class TbRuleEngineQueueConsumerManager {
consumer.subscribe(Set.of(tpi));
launchConsumer(consumer);
});
removedTasks.forEach(TbQueueConsumerTask::awaitCompletion);
}
@Override

Loading…
Cancel
Save