I’ve been reading the documentation for Competing Consumers and noted that it recommends catch up subscriptions for cases like projecting into a read model as it will be sensitive to the order of events. It also says that one of the benefits of competing consumers is to support failover, which is hard to do when subscriptions are client managed. Is it possible to have both, i.e. a server tracked, single consumer, fully ordered subscription with the same ack/checkpoint semantics as the competing consumers have today?
Specifically, what happens if I create a persistent subscription with MaxSubscriberCount = 1? Will one subscriber claim an implicit lock and other subscribers receive an error when trying to subscribe that goes away when the first subscriber does? Would it be possible to implement a single consumer subscription with HA using this method?
I’ve also just noticed the discussion about consumer strategies at http://docs.geteventstore.com/dotnet-api/3.5.0/competing-consumers/. The “pinned” strategy appears to be very close to what I’d ideally want, but mentions that ordering is not guaranteed
-
Under what circumstances may I receive out of order messages when using this strategy?
-
Would it be possible in a future release to provide something like this strategy, but with a fixed number of partitions (for example 1) to avoid buckets being re-assigned as subscribers come and go?
Cheers,
Kristian