Reputation: 1
Say I have a spout which emmits the messages in a topic in to two streams( stream1 & stream2) and two bolts consume the messages from these streams(bolt1 -> stream1 ,bolt2 -> stream2).Now if bolt 2 fails to ack the tuple will the message be replayed only to bolt 2?According to the new consumer API in storm (apache-storm-1.0.2) a retry mechanism is implemented in which if numFail> maxRetry then tuple is acked by storm.My doubt is what happens to the message after it is acked this way? will it be removed from the kafka queue itself? If so we'll loose some messages which have failed.Can someone please enlighten me on the lifecycle of a tuple and what happens to a message starting from kafka to storm , when it fails to be acked.
Upvotes: 0
Views: 335
Reputation: 62310
If only one bolt acks the tuple but not the second one, the tuple will be replayed to both bolts.
Furthermore, if max retry is reached, Storm will not try to send this message again and drop. But it will not be removed the the original source (in your case it seems to be Kafka, for with deleting messages is not possible in the first place).
Upvotes: 1