Which solution will meet these requirements?
Use an SQS FIFO queue. Configure the visibility timeout value.
Use an SQS standard queue with a SendMessageBatchRequestEntry data type. Configure the DelaySeconds values.
Use an SQS standard queue with a SendMessageBatchRequestEntry data type. Configure the visibility timeout value.
Use an SQS FIFO queue. Configure the DelaySeconds value.
Explanations:
Using an SQS FIFO (First-In-First-Out) queue ensures that messages are processed in the exact order they are sent. This is crucial for avoiding out-of-order updates in the legacy system. Configuring the visibility timeout ensures that messages are not processed again before the processing is complete, allowing the legacy system the necessary time to handle transactions without introducing order issues.
An SQS standard queue does not guarantee the order of messages, so using it would not prevent out-of-order updates in the legacy system. While configuringSendMessageBatchRequestEntrywithDelaySecondsmight control when messages are visible, it does not ensure the order is maintained, which is a key requirement.
Similar to option B, using an SQS standard queue does not guarantee message order. Configuring the visibility timeout helps with processing but does not address the core issue of potential out-of-order updates. Thus, it does not fulfill the requirement to ensure ordered processing in the legacy system.
While using an SQS FIFO queue would ensure the order of messages, configuringDelaySecondsintroduces a delay before messages are visible, which can lead to potential processing delays and may still not fit the requirements of immediate processing by the legacy system, especially since it can take up to 5 minutes. Therefore, this option is not a complete solution to the problem.