org.eligosource.eventsourced.core

Channel

trait Channel extends Actor

A channel keeps track of successfully delivered event org.eligosource.eventsourced.core.Messages. Channels are used by org.eligosource.eventsourced.core.Eventsourced actors to prevent redundant message delivery to destinations during event message replay.

For channels to work properly, Eventsourced processors must copy the processorId and sequenceNr values from a received (and journaled) input event message to output event messages. This is usually done by calling copy() on the received input event message and updating only those fields that are relevant for the application such as event or ack, for example:

class Processor(channel: ActorRef) extends Actor {
def receive = {
  case msg: Message => {
    // ...
    channel ! msg.copy(event = ..., ack = ...)
  }
}
}

When using an org.eligosource.eventsourced.core.Emitter, this is done automatically.

A less reliable alternative to channels is communication via sender references. Event messages that are sent to processors during a replay always have a deadLetters sender reference which prevents redundant delivery as well. The main difference is that the delivery guarantee changes from at-least-once to at-most-once.

See also

org.eligosource.eventsourced.core.DefaultChannel org.eligosource.eventsourced.core.ReliableChannel org.eligosource.eventsourced.core.Message org.eligosource.eventsourced.core.Confirm org.eligosource.eventsourced.core.EventsourcingExtension

Linear Supertypes
Actor, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Channel
  2. Actor
  3. AnyRef
  4. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. type Receive = PartialFunction[Any, Unit]

    Definition Classes
    Actor

Abstract Value Members

  1. abstract def destination: ActorRef

    Channel destination.

  2. abstract def id: Int

    Channel id.

  3. abstract def receive: akka.actor.Actor.Receive

    Definition Classes
    Actor

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. implicit val context: ActorContext

    Definition Classes
    Actor
  9. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  10. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  11. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  14. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  15. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  18. def postRestart(reason: Throwable): Unit

    Definition Classes
    Actor
    Annotations
    @throws( classOf[java.lang.Exception] )
  19. def postStop(): Unit

    De-registers this channel from org.eligosource.eventsourced.core.EventsourcingExtension.

    Definition Classes
    Channel → Actor
  20. def preRestart(reason: Throwable, message: Option[Any]): Unit

    Definition Classes
    Actor
    Annotations
    @throws( classOf[java.lang.Exception] )
  21. def preStart(): Unit

    Definition Classes
    Actor
    Annotations
    @throws( classOf[java.lang.Exception] )
  22. implicit final val self: ActorRef

    Definition Classes
    Actor
  23. final def sender: ActorRef

    Definition Classes
    Actor
  24. def supervisorStrategy: SupervisorStrategy

    Definition Classes
    Actor
  25. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  26. def toString(): String

    Definition Classes
    AnyRef → Any
  27. def unhandled(message: Any): Unit

    Definition Classes
    Actor
  28. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Actor

Inherited from AnyRef

Inherited from Any

Ungrouped