Which solution meets these requirements?
Create multiple Amazon Kinesis data streams based on the quote type. Configure the web application to send messages to the proper data stream. Configure each backend group of application servers to use the Kinesis Client Library (KCL) to pool messages from its own data stream.
Create an AWS Lambda function and an Amazon Simple Notification Service (Amazon SNS) topic for each quote type. Subscribe the Lambda function to its associated SNS topic. Configure the application to publish requests for quotes to the appropriate SNS topic.
Create a single Amazon Simple Notification Service (Amazon SNS) topic. Subscribe Amazon Simple Queue Service (Amazon SQS) queues to the SNS topic. Configure SNS message filtering to publish messages to the proper SQS queue based on the quote type. Configure each backend application server to use its own SQS queue.
Create multiple Amazon Kinesis Data Firehose delivery streams based on the quote type to deliver data streams to an Amazon OpenSearch Service cluster. Configure the application to send messages to the proper delivery stream. Configure each backend group of application servers to search for the messages from OpenSearch Service and process them accordingly.
Explanations:
Although Amazon Kinesis can handle streaming data and separate streams by quote type, it is typically used for real-time processing rather than ensuring message retention and guaranteed processing within a specific time frame, such as 24 hours. It also does not natively provide message persistence.
SNS and Lambda can work together for notification and event-driven processing, but they lack message persistence and ordering, which makes it unreliable for managing requests that must be retained and responded to within 24 hours. Additionally, this setup does not guarantee message delivery and durability.
SNS with SQS and message filtering allows for separation by quote type, ensures persistence, and supports message retention for up to 14 days, meeting the 24-hour response requirement. Each backend application server can process messages independently using its own SQS queue, maximizing efficiency.
Kinesis Data Firehose is designed for streaming data into storage or analytics services, not for event processing with persistence. It also lacks mechanisms to handle separate message queues with retention, so it would not meet the 24-hour response and message persistence requirements.