dlg99 commented on a change in pull request #10498: URL: https://github.com/apache/pulsar/pull/10498#discussion_r632659889
########## File path: pulsar-functions/instance/src/main/java/org/apache/pulsar/functions/instance/ContextImpl.java ########## @@ -706,4 +714,67 @@ public void close() { logger.warn("Failed to close producers", e); } } + + @Override + public void seek(String topic, int partition, MessageId messageId) throws PulsarClientException { + Consumer<?> consumer = getConsumer(topic, partition); + consumer.seek(messageId); + } + + @Override + public void pause(String topic, int partition) throws PulsarClientException { + getConsumer(topic, partition).pause(); + } + + @Override + public void resume(String topic, int partition) throws PulsarClientException { + getConsumer(topic, partition).resume(); + } + + public void setInputConsumers(List<Consumer<?>> inputConsumers) { + this.inputConsumers = inputConsumers; + inputConsumers.stream() + .flatMap(consumer -> + consumer instanceof MultiTopicsConsumerImpl + ? ((MultiTopicsConsumerImpl<?>) consumer).getConsumers().stream() + : Stream.of(consumer)) + .forEach(consumer -> topicConsumers.putIfAbsent(TopicName.get(consumer.getTopic()), consumer)); + } + + @VisibleForTesting + Consumer<?> getConsumer(String topic, int partition) throws PulsarClientException { + if (inputConsumers == null) { + throw new PulsarClientException("Getting consumer is not supported"); + } + for (int i = 0; i < 2; i++) { Review comment: Two attempts to get the consumer: 1. Try to get the consumer. 2. If not found, reprocess MultiTopicsConsumers in case new consumers appeared (happens on repartition or a new topic that matches provided pattern if the pattern is used), 3. give it another try. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org