Hi Vaughn,
- journaling (logging) functionality is added to an actor only via
the Eventsourced trait. All other traits do not interact with the
journal.
- a Receiver is a convenience trait that unwraps a Message so that
an actor's receive method can pattern match against the received
event/command directly. It's usage is optional.
- an Emitter is a convenience trait that lets actor send an
event/command via a channel without explicitly wrapping it into a
Message. It's usage is optional.
- a Receiver and/or Emitter trait can be used in combintation with
but also inpdependently of the Eventsourced trait.
- for at-least-once delivery of messages,
channels
can be used. A
reliable
channel preserves message ordering, a
default
channel does not.
- the Confirm trait can also be used independently of Receiver
and/or Emitter. It is used by channel destinations so that they do
not need to explicitly call a Message's confirm() method. The effect
of calling confirm() depends on the type of channel that sent the
message. For a default channel, confirmation writes an
"acknowledgement" to the journal, for a reliable channel, the
message (stored by the channel) is removed again from the journal
(but leaves the "acknowledgement" that has been written together
with the outbound message).
Reading only the
stackable
traits section may not be enough for getting the complete
picture. I recommend reading at least sections
- Overview
- Terminology
- First steps
- Channels
- Recovery
additionally. Hope that helps.
Cheers,
Martin