/** * 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); } }
log.info("Setting newly assigned partitions {}", assignedPartitions); try { listener.onPartitionsAssigned(assignedPartitions); } catch (WakeupException | InterruptException e) { throw e;
inOrder.verify(listenerMock).onPartitionsRevoked(Collections.emptySet()); inOrder.verify(consumerMock).assign(new HashSet<>(onePartition)); inOrder.verify(listenerMock).onPartitionsAssigned(new HashSet<>(onePartition)); inOrder.verify(listenerMock).onPartitionsAssigned(new HashSet<>(twoPartitions));
assignedPartitions.add(partitionThatWillBeRevoked); assignedPartitions.add(assignedPartition); consumerRebalanceListener.onPartitionsAssigned(assignedPartitions); when(consumerMock.assignment()).thenReturn(assignedPartitions); consumerRebalanceListener.onPartitionsAssigned(Collections.singleton(assignedPartition)); when(consumerMock.assignment()).thenReturn(Collections.singleton(assignedPartition));
Set<TopicPartition> assignedPartitions = new HashSet<>(); assignedPartitions.add(assignedPartition); consumerRebalanceListener.onPartitionsAssigned(assignedPartitions); reset(consumerMock); newAssignedPartitions.add(assignedPartition); newAssignedPartitions.add(newPartition); consumerRebalanceListener.onPartitionsAssigned(newAssignedPartitions);
doAnswer(invocation -> { ConsumerRebalanceListener listener = invocation.getArgument(2); listener.onPartitionsAssigned(assignedPartitionsSet); return null; }).when(assigner).assignPartitions(any(), any(), any());
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;
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;
willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)) .onPartitionsAssigned(Collections.singletonList(topicPartition)); return null; }).given(consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class));
willAnswer(i -> { ((ConsumerRebalanceListener) i.getArgument(1)) .onPartitionsAssigned(Collections.singletonList(topicPartition)); return null; }).given(consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class));
@Override public void onPartitionsAssigned(Collection<TopicPartition> partitions) { KafkaMessageSource.this.assigned = true; if (KafkaMessageSource.this.logger.isInfoEnabled()) { KafkaMessageSource.this.logger.info("Partitions assigned: " + partitions); } if (KafkaMessageSource.this.rebalanceListener != null) { KafkaMessageSource.this.rebalanceListener.onPartitionsAssigned(partitions); } }
@Override public void onPartitionsAssigned(Collection<TopicPartition> topicPartitions) { LOG.debug("Consumer rebalancing. Assigned partitions: {}", topicPartitions); // Remove the partitions that are assigned back to this consumer _partitionsRemoved.removeAll(topicPartitions); for (TopicPartition tp : _partitionsRemoved) { _consumerRecordsProcessor.clear(tp); } // Fire user listener. _userListener.onPartitionsAssigned(topicPartitions); }
@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); } }