log.info("Setting newly assigned partitions {}", assignedPartitions); try { listener.onPartitionsAssigned(assignedPartitions); } catch (WakeupException | InterruptException e) { throw e;
/** * Assign partitions to the KafkaConsumer. * @param <K> The consumer key type * @param <V> The consumer value type * @param consumer The Kafka consumer to assign partitions to * @param newAssignment The partitions to assign. * @param listener The rebalance listener to call back on when the assignment changes */ public <K, V> void assignPartitions(Consumer<K, V> consumer, Set<TopicPartition> newAssignment, ConsumerRebalanceListener listener) { Set<TopicPartition> currentAssignment = consumer.assignment(); if (!newAssignment.equals(currentAssignment)) { listener.onPartitionsRevoked(currentAssignment); consumer.assign(newAssignment); listener.onPartitionsAssigned(newAssignment); } }
@Override protected void onJoinPrepare(int generation, String memberId) { // commit offsets prior to rebalance if auto-commit enabled maybeAutoCommitOffsetsSync(time.timer(rebalanceTimeoutMs)); // execute the user's callback before rebalance ConsumerRebalanceListener listener = subscriptions.rebalanceListener(); // copy since about to be handed to user code Set<TopicPartition> revoked = new HashSet<>(subscriptions.assignedPartitions()); log.info("Revoking previously assigned partitions {}", revoked); try { listener.onPartitionsRevoked(revoked); } catch (WakeupException | InterruptException e) { throw e; } catch (Exception e) { log.error("User provided listener {} failed on partition revocation", listener.getClass().getName(), e); } isLeader = false; subscriptions.resetGroupSubscription(); }
@Override public void onPartitionsRevoked(Collection<TopicPartition> partitions) { if (KafkaMessageSource.this.logger.isInfoEnabled()) { KafkaMessageSource.this.logger.info("Partitions revoked: " + partitions); } if (KafkaMessageSource.this.rebalanceListener != null) { KafkaMessageSource.this.rebalanceListener.onPartitionsRevoked(partitions); } }
doAnswer(invocation -> { ConsumerRebalanceListener listener = invocation.getArgument(2); listener.onPartitionsAssigned(assignedPartitionsSet); return null; }).when(assigner).assignPartitions(any(), any(), any());
inOrder.verify(listenerMock).onPartitionsRevoked(Collections.emptySet()); inOrder.verify(consumerMock).assign(new HashSet<>(onePartition)); inOrder.verify(listenerMock).onPartitionsAssigned(new HashSet<>(onePartition)); inOrder.verify(listenerMock).onPartitionsRevoked(new HashSet<>(onePartition)); inOrder.verify(consumerMock).assign(new HashSet<>(twoPartitions)); inOrder.verify(listenerMock).onPartitionsAssigned(new HashSet<>(twoPartitions));
@Override public void onPartitionsRevoked(Collection<TopicPartition> partitions) { if (KafkaMessageSource.this.logger.isInfoEnabled()) { KafkaMessageSource.this.logger.info("Partitions revoked: " + partitions); } if (KafkaMessageSource.this.rebalanceListener != null) { KafkaMessageSource.this.rebalanceListener.onPartitionsRevoked(partitions); } }
final TopicPartition topicPartition2 = new TopicPartition("foo", 2); willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)).onPartitionsAssigned( Collections.singletonList(topicPartition1)); return null;
assignedPartitions.add(partitionThatWillBeRevoked); assignedPartitions.add(assignedPartition); consumerRebalanceListener.onPartitionsAssigned(assignedPartitions); when(consumerMock.assignment()).thenReturn(assignedPartitions); consumerRebalanceListener.onPartitionsRevoked(assignedPartitions); consumerRebalanceListener.onPartitionsAssigned(Collections.singleton(assignedPartition)); when(consumerMock.assignment()).thenReturn(Collections.singleton(assignedPartition));
@Override public void onPartitionsRevoked(Collection<TopicPartition> topicPartitions) { LOG.debug("Consumer rebalancing. Revoked partitions: {}", topicPartitions); // Record the partitions that might be revoked, if the partitions are really revoked, we need to clean up // the state. _partitionsRemoved.clear(); _partitionsRemoved.addAll(topicPartitions); try { // Fire user listener. _userListener.onPartitionsRevoked(topicPartitions); // Commit offset if auto commit is enabled. if (_autoCommitEnabled) { _consumer.commitSync(); } } finally { _consumerRecordsProcessor.clearAllConsumerHighWaterMarks(); } }
final TopicPartition topicPartition2 = new TopicPartition("foo", 2); willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)).onPartitionsAssigned( Collections.singletonList(topicPartition1)); return null;
Set<TopicPartition> assignedPartitions = new HashSet<>(); assignedPartitions.add(assignedPartition); consumerRebalanceListener.onPartitionsAssigned(assignedPartitions); reset(consumerMock); consumerRebalanceListener.onPartitionsRevoked(assignedPartitions); Set<TopicPartition> newAssignedPartitions = new HashSet<>(); newAssignedPartitions.add(assignedPartition); newAssignedPartitions.add(newPartition); consumerRebalanceListener.onPartitionsAssigned(newAssignedPartitions);
private void doUnAssign() { if (assignment.size() > 0 && rebalanceCallback != null) rebalanceCallback.onPartitionsRevoked(assignment); assignment.clear(); paused.clear(); offsets.clear(); }
final TopicPartition topicPartition2 = new TopicPartition("foo", 2); willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)).onPartitionsAssigned( Collections.singletonList(topicPartition1)); return null;
@Override public void refreshAssignment() { List<TopicPartition> allPartitions = partitionFilter.getFilteredTopicPartitions(consumer); Collections.sort(allPartitions, TopicPartitionComparator.INSTANCE); Set<TopicPartition> newAssignment = new HashSet<>(partitioner.partition(allPartitions, context)); Set<TopicPartition> currentAssignment = consumer.assignment(); if (!newAssignment.equals(currentAssignment)) { listener.onPartitionsRevoked(currentAssignment); consumer.assign(newAssignment); listener.onPartitionsAssigned(newAssignment); } }
final TopicPartition topicPartition2 = new TopicPartition("foo", 2); willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)).onPartitionsAssigned( Collections.singletonList(topicPartition1)); return null;
final TopicPartition topicPartition2 = new TopicPartition("foo", 2); willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)).onPartitionsAssigned( Collections.singletonList(topicPartition1)); return null;
final TopicPartition topicPartition2 = new TopicPartition("foo", 2); willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)).onPartitionsAssigned( Collections.singletonList(topicPartition1)); return null;
final TopicPartition topicPartition2 = new TopicPartition("foo", 2); willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)).onPartitionsAssigned( Collections.singletonList(topicPartition1)); return null;
final TopicPartition topicPartition2 = new TopicPartition("foo", 2); willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)).onPartitionsAssigned( Collections.singletonList(topicPartition1)); return null;