protected boolean needUpdate(Collection<InLongTopic> newTopics) {
        if (newTopics.size() != onlineTopics.size()) {
            return true;
        }
        // all topic should share the same properties in one task
        if (Objects.equals(newTopics.stream().findFirst(), onlineTopics.values().stream().findFirst())) {
            return true;
        }
        for (InLongTopic topic : newTopics) {
            if (!onlineTopics.containsKey(topic.getTopic())) {
                return true;
            }
        }
        return false;
    }
Basic class of multi topic fetchers.
The main differences between this and {@link SingleTopicFetcher} is that:
1. MultiTopicFetcher maintains a list of topics while {@link SingleTopicFetcher} only maintains one;
2. All topics share the same properties;
3. The joining and removing of topics will result in new creation of consumer,
     and the old ones will be put in a list, waiting to be cleaned by a scheduled thread.
inlong-sdk/sort-sdk/src/main/java/org/apache/inlong/sdk/sort/api/MultiTopicsFetcher.java