The current code sample for trying out the TCK misses the "akka" prefix
which means that the TCK test will fail with an error regarding not
specifying a journal plugin (because the journal plugin property is
wrong in the sample)
Fixes#29528
* Make ShardingDirectReplication private
And provider user API to provide ReplicaId so that local messages don't
need to be forwarded to sharding to just be dropped
* Update docs to say direct replication is on my default
* Doh
* Embed akka serialization inside jackson serialization
Allows re-use of existing serializers when embedding the types in
Jackson
* Fix false dead code warning
* Move marker trait and add docs
* Remove module and document adding annotations
* Review feedback
* Tagging for replicated event sourcing
* Docs improvements
* Support for currentEventsByTag in persistence testkit and test coverage for tags in replicated
* Move active active internals into the internal package
* Renaming active active to Replicated Event Sourcing
* Rename of Active Active to Replicated Event Sourcing
* Revert changes to testkit
* Java test formatting...
* Gave up on getting apidoc to link to EventSourcedBehavior and made code snippets of it
Co-authored-by: Christopher Batey <christopher.batey@gmail.com>
* Add missing serializers (and rename classes because metadata is a word)
* Add test instances for journal and snapshot support
* Method to add metadata to existing snapshotmetadata
* Better error message if replicated stream does not have metadata
* Snapshot store tck support for metadata
* Docs for tck coverage of AA metadata
Updated stream-composition.md to use Flow.fromSinkAndSourceCoupledMat or Flow.fromSinkAndSourceCoupled rather than the deprecated CoupledTerminationFlow.fromSinkAndSource.
Fixes#28769
Use case for this is if you have a sequence of elements that has been
partitioned across multiple streams, and you want to merge them back
together in order. It will typically be used in combination with
`zipWithIndex` to define the index for the sequence, followed by a
`Partition`, followed by the processing of different substreams with
different flows (each flow emitting exactly one output for each input),
and then merging with this stage, using the index from `zipWithIndex`.
A more concrete use case is if you're consuming messages from a message
broker, and you have a flow that you wish to apply to some messages, but
not others, you can partition the message stream according to which
should be processed by the flow and which should bypass it, and then
bring the elements back together acknowledgement. If an ordinary merge
was used rather than this, the messages that bypass the processing flow
would likely overtake the messages going through the processing flow,
and the result would be out of order offset acknowledgement which would
lead to dropping messages on failure.
I've included a minimal version of the above example in the documentation.
New type StatusReply simplifies the very common use case of replying to a request with either a successful reply or an error reply which can be repetitive to define for every actor, with the additional overhead of having to make sure each such sealed top type + 2 concrete reply classes has working serialization.