Different approach than in classic AtLeastOnceDelivery because I would like:
* support flow control, with a work pulling approach
* be possible to use with or without persistence (without it may loose
messages if producer node crashes)
* detect lost messages on the consumer side and let that drive resends,
instead of aggressively resending from producer side
* deliver messages in order and deduplicate resent messages
* have an efficient protocol for acknowledgments over the network (not ack each message),
but still have a simple one-by-one protocol for the end user
* support 3 use cases (building blocks)
* point-to-point
* work pulling
* sharding
* optional durable queue, with one event sourced implementation
* protobuf serialization
* ApiMayChange
* reference docs and examples
* api docs
* doc example code missing so far
* deprecate internal sameThread ec and use a new one for all internal use sites
* Use the respective Scala version standard library "same thread" ec
* fallback to the old inline impl on 2.12 when reflection isn't possible
* First stab at distributed pubsub for typed
* Also allow sending to a single subscriber across the topic
* Revert "Also allow sending to a single subscriber across the topic"
This reverts commit 4fd4f0b75c0dda01706dcde70645dcfa09da889b.
* Serializer and basic multi-jvm test
* docs
* Review feedback
* This reads better
* One brace too many
* sample formatting/headers/yadi
* Hide actual messages to ease bincomp evolution
* More tesssssts
* And even moar tessssssssts
* Review feedback addressed
* Same serialization as typed sharding
Mention turnaround in docs
Leases are always stored as a ScalaLease and the Java LeaseProvider
unwraps the adapter.
It is important that the same lease can be used from java and scala for
mixed langugae code bases.
* Improving the performance of ByteString.decodeString, and adding ByteString.encodeBase64 and ByteString.decodeBase64
* ByteString.take should return itself whenever possible
* Implementing fallback for the rare case where the JDKs Base64 returns a non-array-backed ByteBuffer
* Adding mima excludes for encodeBase64/decodeBase64
Test didn't verify that subscription was completed before triggering the event
it expected to get an event bus event about.
Verified manually with a sleep in EventStreamAdapter.