https://github.com/apache/pulsar-client-go/pull/1340

In this PR, I fixed the inconsistency in the Go client regarding the
behavior of `HasNext, Next, and receive` after `seek`. However,
there's a point of contention due to a breaking change.

Refer to comment:
https://github.com/apache/pulsar-client-go/pull/1340#discussion_r1978554860

Currently, the Go client doesn't consider StartMessageIDInclusive for
seek. The current behavior is:
```
consumer.seek(msgid-5)
consumer.receive()
// will receives from msgid-5
```

After this PR, user need to set StartMessageIDInclusive=true to
maintain the original behavior (which is consistent with the current
Java client implementation; you can refer to the test:
https://github.com/apache/pulsar/blob/a1f3322ed358ab6841f0d3e43f2afcc54788b887/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/SubscriptionSeekTest.java#L142-L165).

In the Java client, StartMessageIDInclusive does affect seek. Perhaps
the name of this configuration wasn't ideal initially, but there is a
comment in the Java client:
https://github.com/apache/pulsar/blob/f199e8805f517373dbcc0f0c4a132218ecc24f0a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/ConsumerBuilder.java#L699

Regardless, it changes the existing behavior of the Go client but
aligns it with the Java client.

I hope the PR gets merged. I've updated the documentation and will add
a label to this PR so it can be included in the release notes for the
next release to inform users.

I would like to hear your suggestions.

Thanks,
Baodi Shi

Reply via email to