Keep in mind that this answer was correct for June 2015
After some study of the problem, bearing in mind the same question, I found that SQS (with SNS) is preferable for most use cases, unless the order of the messages is important to you (SQS does not guarantee FIFO for messages).
Kinesis has 2 main advantages: (1) you can read the same message from several applications and (2) you can re-read the messages if necessary.
Both benefits can be achieved by using SNS as a fan for SQS. This means that the message producer sends only one message to the SNS. SNS then branches the message into several SQSs, one for each consumer application. Thus, you can get as many consumers as you want, without thinking about how to divide the capacity.
In addition, we added another SQS, which is subscribed to SNS, which will store messages for 14 days. In the usual case, no one reads from this SQS, but in the case of an error that makes us want to rewind the data, we can easily read all the messages from this SQS and resend them to SNS. While Kinesis provides only 7 days of storage.
In conclusion, SNS + SQS is much simpler and provides most of the features. IMO, you need a really strong argument to choose Kinesis.
Roee Gavirel Jun 16 '15 at 10:25 2015-06-16 10:25
source share