I know this topic has come up before, but what are your current thoughts on providing a non-blocking client?
The issue with the current API will always be that threads get blocked in SubscriptionListener.onEvent, or a variation of it. So if you have 100 connections to EventStore that will take 100 threads most of the time, as usually the client is slower in processing events than EventStore can provide them.
The only way around this, that I can think of, is to properly implement reactive streams so that the back-pressure goes all the way back into the EventStore server rather than getting handled with blocking code (e.g. in ReadSubscription.onNext in Java). Without proper back-pressure there will always be a blocked thread somewhere, as far as I can tell.
Sooo… any plans to fix this? WDYT?