.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

Heartbeat Microservice (version 2.1.0)
======================================

The main objective of **Heartbeat Microservice** is to receive the periodic
heartbeat from the configured eventNames and report the loss of heartbeat
onto DMaap if number of consecutive missed heartbeat count is more than 
the configured missed heartbeat count

Heartbeat Microservice overview and functions
---------------------------------------------

.. toctree::
   :maxdepth: 1
	
   ./architecture.rst
   ./design.rst
   ./build_setup.rst
   ./testprocedure.rst
