* It's mostly technical concern that is blurring the business logic in the entity
* Async interactions before stopping is often not needed
* Implemented with an internal PoisonPill signal that is added by sharding,
* Persistent actors handle PoisonPill and run side effects after persist
and process stashed messages before stopping.
* remove unecessary stop messages
* reference docs
Previously OptionVal was restricted to types that have Null as their
bottom type, that is reference types (that extend AnyRef/Object), rather
than also allowing primitives (that extend AnyVal).
By removing this restrictions any type is a valid type argument.
The effect this will have is that primitives will be box, because we
need a way to represent the None case (using the null value).
* Introduce 'MemberDowned' member event
Compatiblity note: MemberEvent is a sealed trait, so it is debatable whether
it is acceptable to introduce a new member.
* Be more conservative (more like leaving), add test
* Avoid calling asInstanceOf in dilated
* Fix the rounding in dilated for Java
* Delegate Java dilated to Scala dilated
* Import scala.concurrent.duration.Duration
* Read port/weight/priority as unsigned shorts for SRVRecords
* Delete writing code for resource records. Isn't used/tested.
* Mima and review feedback
* Create typed ActorMaterializer from ActorContext to bind stream's lifecycle with an actor's lifecycle
* Add Java API for creating typed ActorMaterializer from ActorContext
* Makes the combination more visable
* You don't have to worry about the persistenceId, only EntityTypeKey and entityId
* The glue is stronger in the javadsl because of two reasons
* Couldn't realisticly create a PersistentEntity class extending PersistenBehavior (which
contains all the optional parameters and functions) since that would duplicate too much.
* The ActorContext would be needed in the ShardedEntityContext parameter and because of the
additional M type parameters the type inference breaks down when using the factory. Would
require specifying the type of the ShardedEntityContex[M] parameter. That problem doesn't
seem to exist in Java.
renamed:
s/ShardedEntityContext/EntityContext/
s/ShardedEntity/Entity/
* PersistenceId type to differentiate between persistenceId and entityId, #25703
* both entityId (for sharding) and persistenceId as String types was easy
mix-up
* utility method in EntityTypeKey to concatenaty the type and entityId to
a unique persistenceId
* support custom separator to enable compatilbility with Lagom's javadsl
* The replies didn't change after the leaving
* I see two reason why it could have failed
* The test is sending the same messages as the very first thing
earlier in the test and then sharding might not now about the
two nodes and therefore allocated all to one node
* All messages are hashed to the same node/shard
* Also cleanup javadsl Receive, which is only used from AbstractBehavior
* Clarify further in docs that the functional vs OO style is a matter of taste