Support common scale-out message bus semantics in an abstract base class #1712

Closed
DamianEdwards opened this Issue Mar 18, 2013 · 1 comment

Comments

Projects
None yet
3 participants
Owner

DamianEdwards commented Mar 18, 2013

  • Sharding messages across multiple streams (all the following features need to take multi-stream into account)
  • Queue all outgoing sends up to a maximum configurable size and then fail sends inline
  • Queue all incoming messages so that derivations can call OnReceived concurrently
  • Allow derivations to explicitly start buffering when a recoverable error occurs, e.g. server not available
  • Start in a buffering state until derivations explicitly call Open or OnReceived
  • When in the buffering state, auto-Open when a call to OnReceived is made by the derivation
  • Allow derivations to explicitly close when an unrecoverable error occurs
  • Handle overlapping calls to Open, Buffer, OnReceived and Close made by the derivation
  • Handle calls to Buffer/Close being made inline from a call to Send
  • Ensure any pending queued outgoing sends are not lost when a call to Buffer or Open is made by the derivation
  • Have a ScaleOutSettings class with the common configuration options:
    • error callback
    • batch size/timeout
    • max queue length

davidfowl was assigned Mar 18, 2013

Owner

davidfowl commented Apr 2, 2013

@DamianEdwards we need to move batching to another bug for rtw.

Xiaohongt was assigned Apr 2, 2013

Xiaohongt closed this Apr 9, 2013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment