Pamiętaj, że ta odpowiedź była poprawna dla czerwca 2015 r
Po dłuższym przestudiowaniu problemu, mając na uwadze to samo pytanie, stwierdziłem, że SQS (z SNS) jest preferowany w większości przypadków użycia, chyba że kolejność komunikatów jest dla Ciebie ważna (SQS nie gwarantuje FIFO w wiadomościach).
Kinesis ma dwie główne zalety:
- możesz przeczytać tę samą wiadomość z kilku aplikacji
- w razie potrzeby możesz ponownie przeczytać wiadomości.
Obie zalety można osiągnąć, używając SNS jako wachlarza do SQS. Oznacza to, że producent wiadomości wysyła tylko jedną wiadomość do SNS, a następnie SNS rozsyła wiadomość do wielu SQS, po jednym dla każdej aplikacji konsumenckiej. W ten sposób możesz mieć tylu konsumentów, ilu chcesz, bez myślenia o shardingu.
Co więcej, dodaliśmy jeszcze jeden SQS, który jest subskrybowany do SNS, który będzie przechowywać wiadomości przez 14 dni. W normalnym przypadku nikt nie czyta z tego SQS, ale w przypadku błędu, który powoduje, że chcemy przewinąć dane, możemy łatwo odczytać wszystkie wiadomości z tego SQS i ponownie wysłać je do SNS. Podczas gdy Kinesis zapewnia tylko 7 dni retencji.
Podsumowując, SNS + SQS jest znacznie łatwiejsze i zapewnia większość możliwości. IMO potrzebujesz naprawdę mocnego etui, aby wybrać Kinesis zamiast niego.