Closed Samreay closed 6 months ago
The latest
means that you are reading the messages that are produced after the reader is created. It shouldn't work with start_message_id_inclusive
.
That seems incredibly unintuitive. If I say to someone "Hey, get me the latest message" I'd expect them to give me the latest message, not the first message produced after I asked.
Be that as it may, how should I go about consuming the last message in a topic with the python client then? Right now I'm seeking to a day in the past and just reading everything until the final message, which is incredibly wasteful.
@RobertIndie That doesn't seem right. The Go client explicitly handles the case where startMessageIDInclusive && startingMessageID == latestMessageID
. I would expect the Python client to match that behaviour or at least document that the functionality isn't working yet.
Yeah looks like the Java client also checks to see if its latest and inclusive, and then seeks explicitly to the last message: https://github.com/apache/pulsar/blob/176bdeacd309e8c1e49358987a1946abd30ba34a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java#L2362
Thanks for all your information.
I would expect the Python client to match that behaviour or at least document that the functionality isn't working yet.
That makes sense to me.
This issue is related to this C++ client issue: https://github.com/apache/pulsar-client-cpp/issues/385. I have pushed a PR to fix it: https://github.com/apache/pulsar-client-cpp/pull/386.
Hopefully it will be released in the next feature release of the Python client.
Hi team,
When using
start_message_id_inclusive
, we expect the message seeked to be returned. This is the case for thepulsar.MessageId.earliest
, but does not work withpulsar.MessageId.latest
.Reproduction
First, run a pulsar standalone instance:
Then, run this code:
The behaviour of the earliest reader is as expected. But the latest reader should not time out.