p

blended

streams

package streams

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. Protected

Package Members

  1. package file
  2. package internal
  3. package jms
  4. package json
  5. package message
  6. package multiresult
  7. package processor
  8. package transaction
  9. package worklist

Type Members

  1. abstract class AbstractStreamController[T, Mat] extends Actor with StreamControllerSupport[T, Mat]
  2. abstract class AckSourceLogic[T <: AcknowledgeContext] extends TimerGraphStageLogic

    Provide common logic for Source stages producing FlowEnvelopes requiring acknowledgement handling.

    Provide common logic for Source stages producing FlowEnvelopes requiring acknowledgement handling.

    The AckSource logic encapsulates the underlying logic for an arbitrary Source of FlowEnvelopes. The envelopes will be passed down stream and must be acknowledged or denied eventually. An acknowledgement that takes too long, will be treated as a denial as well.

    A concrete implementation must implement the actions to be executed upon acknowledgement and denial. For example, a JMS source would use a JMS acknowledge on the underlying JMS message and a session.recover() upon a denial. A file system based source may move or delete the original file upon acknowledge and restore the original file upon denial.

    After picking up an envelope from an external system, the envelope will be considered to be inflight until either an acknowledge or deny has been called. The AckSource logic defines the maximum number of messages that can be inflight at any moment in time. No further messages will be pulled from the external system until a free inflight slot will become available.

    Concrete implementations must:

    - create and maintain any technical connections required to poll the external system - map the inbound data to a FlowEnvelope - implement the concrete actions for acknowledgement and denial

    We will use an AcknowledgeContext to hold an inflight envelope and the id of the inflight slot it is using along with any additional that might be required to perform an acknowledge or denial.

    As a result, each poll of the external system will produce an Option[AcknowledgeContext] which will then be inserted into a free inflight slot. As a consequence, polling of the external system will only be performed if and only if a free inflight slot is available.

    As long as free inflight slots are available and no external messages are available, the poll will be executed \in regular intervals. Concrete implementations may overwrite the the nextPoll() method to modify the calculation of the next polling occurrence.

  3. trait AcknowledgeContext extends AnyRef
  4. case class BlendedStreamsConfig(transactionShard: Option[String], minDelay: FiniteDuration, maxDelay: FiniteDuration, exponential: Boolean, random: Double, onFailureOnly: Boolean, resetAfter: FiniteDuration) extends Product with Serializable
  5. case class DefaultAcknowledgeContext(inflightId: String, envelope: FlowEnvelope, created: Long) extends AcknowledgeContext with Product with Serializable
  6. case class FlowHeaderConfig extends Product with Serializable
  7. trait FlowProcessor extends AnyRef
  8. trait StreamControllerSupport[T, Mat] extends AnyRef

Value Members

  1. object AckState extends Enumeration

    The state of an acknowledgement : PENDING : The acknowledge or denial is still outstanding DENIED : The associated envelope has been denied ACKNOWLEDGED : The associated envelope has been acknowledged

  2. object BlendedStreamsConfig extends Serializable
  3. object FlowHeaderConfig extends Serializable
  4. object FlowProcessor
  5. object StreamController
  6. object StreamFactories

Ungrouped