amazon web services - AWS: multiple instances reading SQS -


simple question: want run autoscale group on amazon, fires multiple instance processes messages sqs queue. how know instances aren't processing same messages?

i can delete message queue when it's processed. if it's not deleted yet , still being processed instance, instance can download same message , processing also, opinion.

aside remote possibility of sqs incorrectly delivering same message more once (which still need account for, though unlikely), suspect question stems lack of familiarity sqs's concept of "visibility timeout."

immediately after component receives message, message still in queue. however, don't want other components in system receiving , processing message again. therefore, amazon sqs blocks them visibility timeout, period of time during amazon sqs prevents other consuming components receiving , processing message.

http://docs.aws.amazon.com/awssimplequeueservice/latest/sqsdeveloperguide/aboutvt.html

this keeps multiple queue runners seeing same message. once visibility timeout expires, message delivered again queue consumer, unless delete it, or exceeds maximum configured number of deliveries (at point it's deleted or goes separate dead letter queue if have configured one). if job take longer configured visibility timeout, consumer can send request sqs change visibility timeout individual message.


update:

since answer written, sqs has introduced fifo queues in of aws regions. these operate same logic described above, guaranteed in-order delivery , additional safeguards guarantee occasional duplicate message delivery cannot occur.

fifo (first-in-first-out) queues designed enhance messaging between applications when order of operations , events critical, or duplicates can't tolerated. fifo queues provide exactly-once processing limited 300 transactions per second (tps).

http://docs.aws.amazon.com/awssimplequeueservice/latest/sqsdeveloperguide/fifo-queues.html

switching application fifo queue require code changes, , requires new queue created -- existing queues can't changed on fifo.


Comments

Popular posts from this blog

android - MPAndroidChart - How to add Annotations or images to the chart -

javascript - Add class to another page attribute using URL id - Jquery -

firefox - Where is 'webgl.osmesalib' parameter? -