apapia edited a comment on issue #468: URL: https://github.com/apache/pulsar-client-go/issues/468#issuecomment-1011514612
@flowchartsman I'm picking this up from @frankjkelly and trying to implement the Reader interface. However, I'm unsure how to implement it for our use case. Essentially, we just have a worker than wants to read a topic from the beginning to the "end" where the end is indicated by a message with an end-of-stream property. If this worker dies, the "job" will just be picked up by another worker which will start reading from the beginning of the stream. Now we need to handle reading the stream while a publisher is writing to it in real-time and we may also connect to the topic to read before the publisher does. What I'm unclear on is how to use the `reader.HasNext()` and `reader.Next(ctx)` interface. Under what conditions will `HasNext()` return false? Presumably any time there are no unread messages? If `HasNext()` returns false, what should the reader routine do? sleep for some amount of time? We want to read with as minimal latency as possible so we'd like to avoid unnecessary sleeps. With the Consumer interface, we were able to simply call `consumer.Receive(ctx)` and it would block until the next message was available. Is there a way to achieve that while using the Reader for a non-durable subscription? Thanks! -- 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. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
