|
Akka/Scala example source code file (fault-tolerance-sample.rst)
The fault-tolerance-sample.rst Akka example source code.. _fault-tolerance-sample-scala: Diagrams of the Fault Tolerance Sample ---------------------------------------------- .. image:: ../images/faulttolerancesample-normal-flow.png *The above diagram illustrates the normal message flow.* **Normal flow:** ======= ================================================================================== Step Description ======= ================================================================================== 1 The progress ``Listener`` starts the work. 2 The ``Worker`` schedules work by sending ``Do`` messages periodically to itself 3, 4, 5 When receiving ``Do`` the ``Worker`` tells the ``CounterService`` to increment the counter, three times. The ``Increment`` message is forwarded to the ``Counter``, which updates its counter variable and sends current value to the ``Storage``. 6, 7 The ``Worker`` asks the ``CounterService`` of current value of the counter and pipes the result back to the ``Listener``. ======= ================================================================================== .. image:: ../images/faulttolerancesample-failure-flow.png *The above diagram illustrates what happens in case of storage failure.* **Failure flow:** =========== ================================================================================== Step Description =========== ================================================================================== 1 The ``Storage`` throws ``StorageException``. 2 The ``CounterService`` is supervisor of the ``Storage`` and restarts the ``Storage`` when ``StorageException`` is thrown. 3, 4, 5, 6 The ``Storage`` continues to fail and is restarted. 7 After 3 failures and restarts within 5 seconds the ``Storage`` is stopped by its supervisor, i.e. the ``CounterService``. 8 The ``CounterService`` is also watching the ``Storage`` for termination and receives the ``Terminated`` message when the ``Storage`` has been stopped ... 9, 10, 11 and tells the ``Counter`` that there is no ``Storage``. 12 The ``CounterService`` schedules a ``Reconnect`` message to itself. 13, 14 When it receives the ``Reconnect`` message it creates a new ``Storage`` ... 15, 16 and tells the ``Counter`` to use the new ``Storage`` =========== ================================================================================== Full Source Code of the Fault Tolerance Sample ------------------------------------------------------ .. includecode:: code/docs/actor/FaultHandlingDocSample.scala#all Other Akka source code examplesHere is a short list of links related to this Akka fault-tolerance-sample.rst source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.