Trait/Object

com.rbmhtechnology.eventuate

EventsourcedProcessor

Related Docs: object EventsourcedProcessor | package eventuate

Permalink

trait EventsourcedProcessor extends EventsourcedWriter[Long, Long] with ActorLogging

An EventsourcedWriter that writes processed events to a targetEventLog. EventsourcedProcessor is an idempotent writer that guarantees that no duplicates are ever written to the target event log, also under failure conditions. Hence, applications don't need to take extra care about idempotency. Processed events are those returned by processEvent, an application-defined event handler that is invoked with events from the source eventLog.

During initialization, a processor reads the processing progress from the target event log. The timeout for this read operation can be configured with the eventuate.log.read-timeout parameter for all event-sourced processors or defined on a per class or instance basis by overriding readTimeout. The timeout for write operations to the target log can be configured with the eventuate.log.write-timeout parameter for all event-sourced processors or defined on a per class or instance basis by overriding writeTimeout.

An EventsourcedProcessor is a stateless processor i.e. in-memory state created from source events can not be recovered. An application that needs stateful event processing should use StatefulProcessor instead.

An EventsourcedProcessor processor writes events with vector timestamps set to source event vector timestamp. In other words, it does not modify event vector timestamps.

The source event log and the target event log of an EventsourcedProcessor must be different. Writing processed events back to the source event log has no effect.

See also

StatefulProcessor

Linear Supertypes
ActorLogging, EventsourcedWriter[Long, Long], EventsourcedWriterFailureHandlers, EventsourcedWriterSuccessHandlers[Long, Long], EventsourcedView, Stash, RequiresMessageQueue[DequeBasedMessageQueueSemantics], UnrestrictedStash, StashSupport, Actor, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. EventsourcedProcessor
  2. ActorLogging
  3. EventsourcedWriter
  4. EventsourcedWriterFailureHandlers
  5. EventsourcedWriterSuccessHandlers
  6. EventsourcedView
  7. Stash
  8. RequiresMessageQueue
  9. UnrestrictedStash
  10. StashSupport
  11. Actor
  12. AnyRef
  13. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. type Handler[A] = (Try[A]) ⇒ Unit

    Permalink
    Definition Classes
    EventsourcedView
  2. type Process = PartialFunction[Any, Seq[Any]]

    Permalink

    Type of this processor's event handler.

  3. type Receive = PartialFunction[Any, Unit]

    Permalink
    Definition Classes
    Actor

Abstract Value Members

  1. abstract def eventLog: ActorRef

    Permalink

    Event log actor.

    Event log actor.

    Definition Classes
    EventsourcedView
  2. abstract def id: String

    Permalink

    Global unique actor id.

    Global unique actor id.

    Definition Classes
    EventsourcedView
  3. abstract def onCommand: Receive

    Permalink

    Command handler.

    Command handler.

    Definition Classes
    EventsourcedView
  4. abstract def processEvent: Process

    Permalink

    This processor's event handler.

    This processor's event handler. It may generate zero or more processed events per source event.

  5. abstract def targetEventLog: ActorRef

    Permalink

    This processor's target event log.

Concrete Value Members

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

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

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

    Permalink
    Definition Classes
    AnyRef → Any
  4. def aggregateId: Option[String]

    Permalink

    Optional aggregate id.

    Optional aggregate id. It is used for routing DurableEvents to event-sourced destinations which can be EventsourcedViews or EventsourcedActors. By default, an event is routed to an event-sourced destination with an undefined aggregateId. If a destination's aggregateId is defined it will only receive events with a matching aggregate id in DurableEvent#destinationAggregateIds.

    Definition Classes
    EventsourcedView
  5. def aroundPostRestart(reason: Throwable): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
    Annotations
    @InternalApi()
  6. def aroundPostStop(): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
    Annotations
    @InternalApi()
  7. def aroundPreRestart(reason: Throwable, message: Option[Any]): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
    Annotations
    @InternalApi()
  8. def aroundPreStart(): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
    Annotations
    @InternalApi()
  9. def aroundReceive(receive: akka.actor.Actor.Receive, msg: Any): Unit

    Permalink
    Attributes
    protected[akka]
    Definition Classes
    Actor
    Annotations
    @InternalApi()
  10. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  11. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  12. def commandContext: BehaviorContext

    Permalink

    Returns the command BehaviorContext.

    Returns the command BehaviorContext.

    Definition Classes
    EventsourcedView
  13. implicit val context: ActorContext

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

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

    Permalink
    Definition Classes
    AnyRef → Any
  16. final lazy val eventContext: BehaviorContext

    Permalink

    Returns an command BehaviorContext that doesn't allow event handler behavior changes.

    Returns an command BehaviorContext that doesn't allow event handler behavior changes. An attempt to change the event handler behavior with eventContext.become() will throw an UnsupportedOperationException.

    Definition Classes
    EventsourcedProcessorEventsourcedView
  17. def finalize(): Unit

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

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

    Permalink
    Definition Classes
    AnyRef → Any
  20. val instanceId: Int

    Permalink
    Definition Classes
    EventsourcedView
  21. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  22. final def lastEmitterAggregateId: Option[String]

    Permalink

    Emitter aggregate id of the last handled event.

    Emitter aggregate id of the last handled event.

    Definition Classes
    EventsourcedView
  23. final def lastEmitterId: String

    Permalink

    Emitter id of the last handled event.

    Emitter id of the last handled event.

    Definition Classes
    EventsourcedView
  24. final def lastProcessId: String

    Permalink

    Id of the local event log that initially wrote the event.

    Id of the local event log that initially wrote the event.

    Definition Classes
    EventsourcedView
  25. final def lastSequenceNr: Long

    Permalink

    Sequence number of the last handled event.

    Sequence number of the last handled event.

    Definition Classes
    EventsourcedView
  26. final def lastSystemTimestamp: Long

    Permalink

    Wall-clock timestamp of the last handled event.

    Wall-clock timestamp of the last handled event.

    Definition Classes
    EventsourcedView
  27. final def lastVectorTimestamp: VectorTime

    Permalink

    Vector timestamp of the last handled event.

    Vector timestamp of the last handled event.

    Definition Classes
    EventsourcedView
  28. def log: LoggingAdapter

    Permalink
    Definition Classes
    ActorLogging
  29. val logger: LoggingAdapter

    Permalink

    This actor's logging adapter.

    This actor's logging adapter.

    Definition Classes
    EventsourcedView
  30. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  31. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  32. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  33. final def onEvent: PartialFunction[Any, Unit]

    Permalink

    Collects processed events generated by processEvent.

    Collects processed events generated by processEvent.

    Definition Classes
    EventsourcedProcessorEventsourcedView
  34. def onRecovery: Handler[Unit]

    Permalink

    Recovery completion handler.

    Recovery completion handler. If called with a Failure, the actor will be stopped in any case, regardless of the action taken by the returned handler. The default handler implementation does nothing and can be overridden by implementations.

    Definition Classes
    EventsourcedView
  35. def onSnapshot: Receive

    Permalink

    Snapshot handler.

    Snapshot handler.

    Definition Classes
    EventsourcedView
  36. def postProcessDurableEvent(e: DurableEvent): DurableEvent

    Permalink

    Override to allow post-processing of DurableEvent instances wrapping events generated by processEvent.

    Override to allow post-processing of DurableEvent instances wrapping events generated by processEvent.

    Amongst other things, this can e.g. be used to set different or additional aggregate IDs for custom routing destinations (which by default take the same routing destinations as the original event that was processed).

  37. def postRestart(reason: Throwable): Unit

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

    Permalink

    Sets recovering to false before calling super.postStop.

    Sets recovering to false before calling super.postStop.

    Definition Classes
    EventsourcedView → UnrestrictedStash → Actor
  39. def preRestart(reason: Throwable, message: Option[Any]): Unit

    Permalink

    Sets recovering to false before calling super.preRestart.

    Sets recovering to false before calling super.preRestart.

    Definition Classes
    EventsourcedView → UnrestrictedStash → Actor
  40. def preStart(): Unit

    Permalink

    Initiates recovery.

    Initiates recovery.

    Definition Classes
    EventsourcedView → Actor
  41. final def read(): Future[Long]

    Permalink

    Asynchronously reads the processing progress from the target event log.

    Asynchronously reads the processing progress from the target event log.

    Definition Classes
    EventsourcedProcessorEventsourcedWriter
  42. def readFailure(cause: Throwable): Unit

    Permalink

    Called with failure details after a read operation failed.

    Called with failure details after a read operation failed. Throws EventsourcedWriter#ReadException by default (causing the writer to restart) and can be overridden.

    Definition Classes
    EventsourcedWriter → EventsourcedWriterFailureHandlers
  43. def readSuccess(progress: Long): Option[Long]

    Permalink

    Sets the read processing progress for this processor and returns it incremented by 1.

    Sets the read processing progress for this processor and returns it incremented by 1.

    Definition Classes
    EventsourcedProcessorEventsourcedWriter → EventsourcedWriterSuccessHandlers
  44. def readTimeout: FiniteDuration

    Permalink

    The default read timeout configured with the eventuate.log.read-timeout parameter.

    The default read timeout configured with the eventuate.log.read-timeout parameter. Can be overridden.

  45. final def receive: Receive

    Permalink

    Initialization behavior.

    Initialization behavior.

    Definition Classes
    EventsourcedView → Actor
  46. final def recovering: Boolean

    Permalink

    Returns true if this actor is currently recovering internal state by consuming replayed events from the event log.

    Returns true if this actor is currently recovering internal state by consuming replayed events from the event log. Returns false after recovery completed and the actor switches to consuming live events.

    Definition Classes
    EventsourcedView
  47. def replayBatchSize: Int

    Permalink

    Maximum number of events to be replayed to this actor before replaying is suspended.

    Maximum number of events to be replayed to this actor before replaying is suspended. A suspended replay is resumed automatically after all replayed events haven been handled by this actor's event handler (= backpressure). The default value for the maximum replay batch size is given by configuration item eventuate.log.replay-batch-size. Configured values can be overridden by overriding this method.

    Definition Classes
    EventsourcedView
  48. final def replayFromSequenceNr: Option[Long]

    Permalink

    Disallow for EventsourcedWriter and subclasses as event processing progress is determined by read and readSuccess.

    Disallow for EventsourcedWriter and subclasses as event processing progress is determined by read and readSuccess.

    Definition Classes
    EventsourcedWriterEventsourcedView
  49. final def save(snapshot: Any)(handler: Handler[SnapshotMetadata]): Unit

    Permalink

    Asynchronously saves the given snapshot and calls handler with the generated snapshot metadata.

    Asynchronously saves the given snapshot and calls handler with the generated snapshot metadata. The handler can obtain a reference to the initial message sender with sender().

    Definition Classes
    EventsourcedView
  50. implicit final val self: ActorRef

    Permalink
    Definition Classes
    Actor
  51. final def sender(): ActorRef

    Permalink
    Definition Classes
    Actor
  52. def snapshotContext: BehaviorContext

    Permalink

    Returns the snapshot BehaviorContext.

    Returns the snapshot BehaviorContext.

    Definition Classes
    EventsourcedView
  53. def stash(): Unit

    Permalink

    Adds the current command to the user's command stash.

    Adds the current command to the user's command stash. Must not be used in the event handler.

    Definition Classes
    EventsourcedView → StashSupport
  54. def supervisorStrategy: SupervisorStrategy

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

    Permalink
    Definition Classes
    AnyRef
  56. def toString(): String

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

    Permalink
    Definition Classes
    Actor
  58. def unstashAll(): Unit

    Permalink

    Prepends all stashed commands to the actor's mailbox and then clears the command stash.

    Prepends all stashed commands to the actor's mailbox and then clears the command stash. Has no effect if the actor is recovering i.e. if recovering returns true.

    Definition Classes
    EventsourcedView → StashSupport
  59. final def wait(): Unit

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  62. final def write(): Future[Long]

    Permalink

    Asynchronously writes processed events that have been collected since the last write together with the current processing progress.

    Asynchronously writes processed events that have been collected since the last write together with the current processing progress. If the number of processed events since the last write is greater than the configured eventuate.log.write-batch-size multiple batches with a size less than or equal to eventuate.log.write-batch-size will be written sequentially. When splitting into multiple batches it is guaranteed that the processing result of a single event is part of the same batch i.e. it is guaranteed that the processing result of a single event is written atomically. If the processing result of a single event is larger than eventuate.log.write-batch-size, write write does not split that batch into smaller batches.

    Definition Classes
    EventsourcedProcessorEventsourcedWriter
  63. def writeFailure(cause: Throwable): Unit

    Permalink

    Called with failure details after a write operation failed.

    Called with failure details after a write operation failed. Throws EventsourcedWriter#WriteException by default (causing the writer to restart) and can be overridden.

    Definition Classes
    EventsourcedWriter → EventsourcedWriterFailureHandlers
  64. def writeSuccess(progress: Long): Unit

    Permalink

    Sets the written processing progress for this processor.

    Sets the written processing progress for this processor.

    Definition Classes
    EventsourcedProcessorEventsourcedWriter → EventsourcedWriterSuccessHandlers
  65. def writeTimeout: FiniteDuration

    Permalink

    The default write timeout configured with the eventuate.log.write-timeout parameter.

    The default write timeout configured with the eventuate.log.write-timeout parameter. Can be overridden.

Inherited from ActorLogging

Inherited from EventsourcedWriter[Long, Long]

Inherited from EventsourcedWriterFailureHandlers

Inherited from EventsourcedWriterSuccessHandlers[Long, Long]

Inherited from EventsourcedView

Inherited from Stash

Inherited from RequiresMessageQueue[DequeBasedMessageQueueSemantics]

Inherited from UnrestrictedStash

Inherited from StashSupport

Inherited from Actor

Inherited from AnyRef

Inherited from Any

Ungrouped