From a25125d685597edfba0cf8b92761e46ad43df276 Mon Sep 17 00:00:00 2001 From: Xiangying Meng <55571188+liangyepianzhou@users.noreply.github.com> Date: Fri, 1 Sep 2023 16:06:54 +0800 Subject: [PATCH] [improve][pip] Implement getLastMessageIds API for Reader (#21052) --- pip/pip-296.md | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 pip/pip-296.md diff --git a/pip/pip-296.md b/pip/pip-296.md new file mode 100644 index 0000000000000..99a57e66624b5 --- /dev/null +++ b/pip/pip-296.md @@ -0,0 +1,93 @@ +# Background knowledge +A consumer is a process that attaches to a topic via a subscription and then receives messages. The reader interface for Pulsar enables applications to manually manage cursors. More knowledge of the Reader and Consumer interface can be found in the [Pulsar Client doc](https://pulsar.apache.org/docs/next/concepts-clients/#reader). + +# Motivation + +Add the `getLastMessageIds` API for Reader. This will help to increase the flexibility of reader usage. + +# Goals + +## In Scope + +Add the `getLastMessageIds` API for Reader. + +## Out of Scope + +None. + + +# High Level Design + +Implement the `getLastMessageIds` method for Reader by internally invoking the Consumer interface. + +# Detailed Design + +## Design & Implementation Details +```java + @Override + public List getLastMessageIds() throws PulsarClientException { + return consumer.getLastMessageIds(); + } + + @Override + public CompletableFuture> getLastMessageIdsAsync() { + return consumer.getLastMessageIdsAsync(); + } +``` + +## Public-facing Changes + + + +### Public API +```java + /** + * Get all the last message id of the topics the reader subscribed. + * + * @return the list of TopicMessageId instances of all the topics that the reader subscribed + * @throws PulsarClientException if failed to get last message id. + * @apiNote It's guaranteed that the owner topic of each TopicMessageId in the returned list is different from owner + * topics of other TopicMessageId instances + */ + List getLastMessageIds() throws PulsarClientException; + + /** + * The asynchronous version of {@link Reader#getLastMessageIds()}. + */ + CompletableFuture> getLastMessageIdsAsync(); +``` +### Binary protocol + +### Configuration + +### CLI + +### Metrics + +# Monitoring + + +# Security Considerations + + +# Backward & Forward Compatibility + +## Revert + + +## Upgrade + + + +# Alternatives + + +# General Notes + +# Links + + +* Mailing List discussion thread: +* Mailing List voting thread: