Elaborating on the message send semantics as per the ticket

This commit is contained in:
Viktor Klang 2011-12-08 12:09:19 +01:00
parent 4803ba517c
commit d7771dc596
2 changed files with 35 additions and 8 deletions

View file

@ -5,9 +5,9 @@ General
:maxdepth: 2
jmm
message-send-semantics
configuration
event-handler
slf4j
addressing
supervision
guaranteed-delivery

View file

@ -1,13 +1,14 @@
.. _guaranteed-delivery:
.. _message-send-semantics:
#####################
Guaranteed Delivery
#####################
#######################
Message send semantics
#######################
Guaranteed Delivery
===================
Guaranteed Delivery?
====================
Akka does *not* support guaranteed delivery.
@ -39,4 +40,30 @@ application and can solve it fastest and most reliable by explicit ``ACK`` and
``RETRY`` (if you really need it, most often you don't). Using Akka's Durable
Mailboxes could help with this.
.. _Erlang documentation: http://www.erlang.org/faq/academic.html
Delivery semantics
==================
At-most-once
------------
Actual transports may provide stronger semantics,
but at-most-once is the semantics you should expect.
The alternatives would be once-and-only-once, which is extremely costly,
or atleast-once which essentially requires idempotency of message processing,
which is a user-level concern.
Ordering is preserved on a per-sender basis
-------------------------------------------
Actor ``A1` sends messages ``M1``, ``M2``, ``M3`` to ``A2``
Actor ``A3`` sends messages ``M4``, ``M5``, ``M6`` to ``A2``
This means that:
1) If ``M1`` is delivered it must be delivered before ``M2`` and ``M3``
2) If ``M2`` is delivered it must be delivered before ``M3``
3) If ``M4`` is delivered it must be delivered before ``M5`` and ``M6``
4) If ``M5`` is delivered it must be delivered before ``M6``
5) ``A2`` can see messages from ``A1`` interleaved with messages from ``A3``
6) Since there is no guaranteed delivery, none, some or all of the messages may arrive to ``A2``
.. _Erlang documentation: http://www.erlang.org/faq/academic.html