@Override public void subscribe(Collection<String> topics, ConsumerRebalanceListener callback) { delegate.subscribe(topics, callback); }
public void subscribe(Pattern pattern) { delegate.subscribe(pattern, NO_OP_CONSUMER_REBALANCE_LISTENER); }
@Override public void subscribe(Collection<String> topics) { delegate.subscribe(topics); }
@Override public void subscribe(Pattern pattern, ConsumerRebalanceListener callback) { delegate.subscribe(pattern, callback); }
/** * Dynamically tune subscription only for the topic that dependencies need. */ @VisibleForTesting synchronized void consumerSubscriptionRebalance() { log.debug("Subscribed Topics " + this.consumer.subscription()); if (!this.subscribedTopics.isEmpty()) { final Iterator<String> iter = this.subscribedTopics.iterator(); final List<String> topics = new ArrayList<>(); while (iter.hasNext()) { topics.add(iter.next()); } this.subscribedTopics.clear(); //re-subscribe topics that are needed this.consumer.subscribe(topics); } }
public KafkaEventMonitor(final DependencyPluginConfig pluginConfig) { this.initKafkaClient(pluginConfig); this.consumer.subscribe(Arrays.asList("AzEvent_Init_Topic")); if (!this.subscribedTopics.isEmpty()) { this.consumerSubscriptionRebalance(); } this.depInstances = new KafkaDepInstanceCollection(); }
consumerProps.setProperty(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, Integer.toString(Integer.MAX_VALUE)); _metricConsumer = new KafkaConsumer<>(consumerProps); _metricConsumer.subscribe(Pattern.compile(metricReporterTopic), new ConsumerRebalanceListener() { @Override public void onPartitionsRevoked(Collection<TopicPartition> collection) {
consumer.subscribe(topics, lease);
Consumer<String, CruiseControlMetric> consumer = new KafkaConsumer<>(props); consumer.subscribe(Collections.singletonList(TOPIC)); long startMs = System.currentTimeMillis(); HashSet<Integer> expectedMetricTypes = new HashSet<>(Arrays.asList((int) ALL_TOPIC_BYTES_IN.id(),
@SuppressWarnings("unchecked") @Test public void stopContainerAfterException() throws Exception { assertThat(this.config.deliveryLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.pollLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.errorLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.closeLatch.await(10, TimeUnit.SECONDS)).isTrue(); MessageListenerContainer container = this.registry.getListenerContainer(CONTAINER_ID); assertThat(container.isRunning()).isFalse(); InOrder inOrder = inOrder(this.consumer); inOrder.verify(this.consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class)); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); inOrder.verify(this.consumer).wakeup(); inOrder.verify(this.consumer).unsubscribe(); inOrder.verify(this.consumer).close(); inOrder.verifyNoMoreInteractions(); }
@SuppressWarnings("unchecked") @Test public void remaingRecordsReceived() throws Exception { assertThat(this.config.deliveryLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.commitLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.pollLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.errorLatch.await(10, TimeUnit.SECONDS)).isTrue(); InOrder inOrder = inOrder(this.consumer); inOrder.verify(this.consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class)); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); inOrder.verify(this.consumer).commitSync( Collections.singletonMap(new TopicPartition("foo", 0), new OffsetAndMetadata(1L))); inOrder.verify(this.consumer).commitSync( Collections.singletonMap(new TopicPartition("foo", 0), new OffsetAndMetadata(2L))); inOrder.verify(this.consumer).commitSync( Collections.singletonMap(new TopicPartition("foo", 1), new OffsetAndMetadata(1L))); assertThat(this.config.count).isEqualTo(4); assertThat(this.config.contents).containsExactly("foo", "bar", "baz", "qux"); assertThat(this.config.remaining).containsExactly("qux", "fiz", "buz"); }
@SuppressWarnings("unchecked") @Test public void stopContainerAfterException() throws Exception { assertThat(this.config.deliveryLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.pollLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.errorLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.closeLatch.await(10, TimeUnit.SECONDS)).isTrue(); MessageListenerContainer container = this.registry.getListenerContainer(CONTAINER_ID); assertThat(container.isRunning()).isFalse(); InOrder inOrder = inOrder(this.consumer); inOrder.verify(this.consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class)); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); inOrder.verify(this.consumer).wakeup(); inOrder.verify(this.consumer).unsubscribe(); inOrder.verify(this.consumer).close(); inOrder.verifyNoMoreInteractions(); assertThat(this.config.count).isEqualTo(4); assertThat(this.config.contents.toArray()).isEqualTo(new String[] { "foo", "bar", "baz", "qux" }); }
@SuppressWarnings("unchecked") @Test public void discardRemainingRecordsFromPollAndSeek() throws Exception { assertThat(this.config.deliveryLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.commitLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.pollLatch.await(10, TimeUnit.SECONDS)).isTrue(); this.registry.stop(); assertThat(this.config.closeLatch.await(10, TimeUnit.SECONDS)).isTrue(); InOrder inOrder = inOrder(this.consumer); inOrder.verify(this.consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class)); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); Map<TopicPartition, OffsetAndMetadata> offsets = new LinkedHashMap<>(); offsets.put(new TopicPartition("foo", 0), new OffsetAndMetadata(2L)); offsets.put(new TopicPartition("foo", 1), new OffsetAndMetadata(1L)); inOrder.verify(this.consumer).commitSync(offsets); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 1), 1L); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 2), 0L); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); offsets = new LinkedHashMap<>(); offsets.put(new TopicPartition("foo", 1), new OffsetAndMetadata(2L)); offsets.put(new TopicPartition("foo", 2), new OffsetAndMetadata(2L)); inOrder.verify(this.consumer).commitSync(offsets); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); assertThat(this.config.count).isEqualTo(7); assertThat(this.config.contents.toArray()).isEqualTo(new String[] { "foo", "bar", "baz", "qux", "qux", "fiz", "buz" }); }
@SuppressWarnings("unchecked") @Test public void stopContainerAfterException() throws Exception { assertThat(this.config.deliveryLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.commitLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.pollLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.errorLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.closeLatch.await(10, TimeUnit.SECONDS)).isTrue(); MessageListenerContainer container = this.registry.getListenerContainer(CONTAINER_ID); assertThat(container.isRunning()).isFalse(); InOrder inOrder = inOrder(this.consumer); inOrder.verify(this.consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class)); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); inOrder.verify(this.consumer).commitSync( Collections.singletonMap(new TopicPartition("foo", 0), new OffsetAndMetadata(1L))); inOrder.verify(this.consumer).commitSync( Collections.singletonMap(new TopicPartition("foo", 0), new OffsetAndMetadata(2L))); inOrder.verify(this.consumer).commitSync( Collections.singletonMap(new TopicPartition("foo", 1), new OffsetAndMetadata(1L))); inOrder.verify(this.consumer).wakeup(); inOrder.verify(this.consumer).unsubscribe(); inOrder.verify(this.consumer).close(); inOrder.verifyNoMoreInteractions(); assertThat(this.config.count).isEqualTo(4); assertThat(this.config.contents.toArray()).isEqualTo(new String[] { "foo", "bar", "baz", "qux" }); }
@SuppressWarnings("unchecked") @Test public void discardRemainingRecordsFromPollAndSeek() throws Exception { assertThat(this.config.deliveryLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.pollLatch.await(10, TimeUnit.SECONDS)).isTrue(); this.registry.stop(); assertThat(this.config.closeLatch.await(10, TimeUnit.SECONDS)).isTrue(); InOrder inOrder = inOrder(this.consumer, this.producer); inOrder.verify(this.consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class)); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); inOrder.verify(this.producer).beginTransaction(); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 0), 0L); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 1), 0L); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 2), 0L); inOrder.verify(this.producer).abortTransaction(); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); inOrder.verify(this.producer).beginTransaction(); Map<TopicPartition, OffsetAndMetadata> offsets = new LinkedHashMap<>(); offsets.put(new TopicPartition("foo", 0), new OffsetAndMetadata(2L)); offsets.put(new TopicPartition("foo", 1), new OffsetAndMetadata(2L)); offsets.put(new TopicPartition("foo", 2), new OffsetAndMetadata(2L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); assertThat(this.config.ehException).isInstanceOf(ListenerExecutionFailedException.class); assertThat(((ListenerExecutionFailedException) this.config.ehException).getGroupId()).isEqualTo(CONTAINER_ID); }
assertThat(this.config.closeLatch.await(10, TimeUnit.SECONDS)).isTrue(); InOrder inOrder = inOrder(this.consumer); inOrder.verify(this.consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class)); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); inOrder.verify(this.consumer).commitSync(