In a Storm topology, a single tuple being emitted by a spout can result in a number of tuples being generated in the later stages of the topology. For example, consider the following topology:
Here, Spout A emits a tuple T(A), which is processed by bolt B and bolt C, which emit tuple T(AB) and T(AC) respectively. So, when all the tuples produced as a result of tuple T(A)--namely, the tuple tree T(A), T(AB), and T(AC)--are processed, we say that the tuple has been processed completely.
When some of the tuples in a tuple tree fail to process either due to some runtime error or a timeout that is configurable for each topology, then Storm considers that to be a failed tuple.
Here are the six steps that are required by Storm to guarantee message processing:
- Tag each tuple emitted by a spout with a unique message ID. This can be done by using the org...