I am not familiar with all the changes since it's original implementation, nor can I speak to for all the changes that went after
The original concept was simple and rigorous. For shared sub, all unacked messages will be redelivered, and for Exclusive subs, the cursor was rewound and everything after the rewind point. was redelivered to preserve order. >but in failover and exclusive subType, if we don't get the response, the user will receive the message from the `incomingQueue` then the order of the message will be broken. This "brokenness" is not clear to me. The sequence 3,4,5,6,7,8,9,10,11 12,13,14,15, 16 ,9,10,11,12,13,14,15,16,17, 18, 19, 20 ...does not break the ordering guarantees of Pular On Tue, Nov 22, 2022 at 5:47 PM PengHui Li <peng...@apache.org> wrote: > Hi, Bo > > Thanks for starting the discussion. > > I have no idea about the initial motivation for supporting message > redelivery for > Failover or Exclusive subscription. The redelivered messages will go to the > same > consumer under a single active consumer subscription mode. > > Or maybe it is only designed for the Shared subscription? > > It's better to get some feedback from Matteo, Joe, or anyone who knows the > background > about this part. > > Thanks, > Penghui > > On Tue, Nov 22, 2022 at 7:36 PM Yubiao Feng > <yubiao.f...@streamnative.io.invalid> wrote: > > > Hi Congbo > > > > I think it is a goog idea. > > > > Thanks > > Yubiao > > Yu > > > > On Mon, Nov 21, 2022 at 9:04 PM 丛搏 <congbobo...@gmail.com> wrote: > > > > > Hello, Pulsar community: > > > > > > Now client consumer `void redeliverUnacknowledgedMessages();` is an > > > async interface, but it doesn't have the return value. only > > > `writeAndFlush` the redeliver command then finishes. > > > > > > `ConsumerImpl`: > > > > > > > > > https://github.com/apache/pulsar/blob/master/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java#L1907-L1909 > > > > > > `MultiTopicsConsumerImpl`: > > > > > > > > > https://github.com/apache/pulsar/blob/master/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java#L667-L677 > > > > > > in the shared subType, I think it doesn't need the response of the > > > `void redeliverUnacknowledgedMessages()`, and naming the > > > `redeliverUnacknowledgedMessages` is ok. > > > > > > but in failover and exclusive subType, if we don't get the response, > > > the user will receive the message from the `incomingQueue` then the > > > order of the message will be broken. If the > > > `redeliverUnacknowledgedMessages` timeout, we should try again. but > > > `redeliverUnacknowledgedMessages` doesn't throw any exception or > > > retry. and the `redeliverUnacknowledgedMessages` name is not accurate > > > for failover and exclusive subType. it is named `rewind` is more > > > suitable. > > > > > > So I suggest `redeliverUnacknowledgedMessages` be deprecated under > > > failover and exclusive subType and add a new similar async and sync > > > method called `rewind` for failover and exclusive subType. > > > > > > Please leave your comments or suggestions, thanks! > > > > > > Thanks, > > > bo > > > > > >