@Override
    public void subscribe(Collection<String> topics, ConsumerRebalanceListener listener) {
        delegate.subscribe(topics, listener);
    }
Subscribe to the given list of topics to get dynamically
assigned partitions. <b>Topic subscriptions are not incremental. This list will replace the current
assignment (if there is one).</b> Note that it is not possible to combine topic subscription with group management
with manual partition assignment through {@link #assign(Collection)}.

If the given list of topics is empty, it is treated the same as {@link #unsubscribe()}.

<p>
As part of group management, the consumer will keep track of the list of consumers that belong to a particular
group and will trigger a rebalance operation if any one of the following events are triggered:
<ul>
<li>Number of partitions change for any of the subscribed topics
<li>A subscribed topic is created or deleted
<li>An existing member of the consumer group is shutdown or fails
<li>A new member is added to the consumer group
</ul>
<p>
When any of these events are triggered, the provided listener will be invoked first to indicate that
the consumer's assignment has been revoked, and then again when the new assignment has been received.
Note that rebalances will only occur during an active call to {@link #poll(Duration)}, so callbacks will
also only be invoked during that time.

The provided listener will immediately override any listener set in a previous call to subscribe.
It is guaranteed, however, that the partitions revoked/assigned through this interface are from topics
subscribed in this call. See {@link ConsumerRebalanceListener} for more details.

@param topics The list of topics to subscribe to
@param listener Non-null listener instance to get notifications on partition assignment/revocation for the
                subscribed topics
@throws IllegalArgumentException If topics is null or contains null or empty elements, or if listener is null
@throws IllegalStateException If {@code subscribe()} is called previously with pattern, or assign is called
                              previously (without a subsequent call to {@link #unsubscribe()}), or if not
                              configured at-least one partition assignment strategy
clients/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumer.java