Guarantees » History » Version 6

« Previous - Version 6/8 (diff) - Next » - Current version
J. Wienke, 05/01/2011 08:51 PM


Guarantees

Quality of Service

For listeners, any guarantee applies to the stream of events received from the bus (not to the entire processing of a given event). In particular, it is possibly that the effective guarantees are weaker than those specified for the listener (if the informer has weaker guarantees than the listener).

For informer, any guarantee applies to the submitting of events to the bus. Guarantees at the receiving end may effectively be weakened depending on the listener configuration.

In the following lists of guarantees, subsequent items include all guarantees given by preceding items.

Ordering

  1. Unordered: Events are delivered in (potentially) arbitrary order.
  2. Ordered: Every listener receives the events of one informer in the order the informer sent the events. No guarantees are given for events of multiple informers.

Independent of the requested ordering, no relation is guaranteed for events arriving at multiple listeners.

Reliability

  1. Unreliable: Events may be dropped and not be visible to a listener.
  2. Reliable: Messages are guaranteed to be delivered. Otherwise an error is raised.

Threading

  • Informer is thread-safe
  • Listener is thread-safe. This implies:
    • Adding/Removing filters from arbitrary threads is possible but does not affect other already registered filters
      • the changes will be applied sometime after the method call, but not synchronized with the method call
    • Add/Remove handlers from arbitrary threads is possible but does not affect other already registered handlers
      • existing handlers will not noticed and effect on the event stream for changes of different handlers
      • for the added or removed handler as a default no guarantee is given that it will be called immediately / won't be called anymore when the add/remove method returns. Nevertheless, a flag can be set to achieve these guarantees.
  • Services are thread-safe