要求我们设计一个基于一段散文的系统是一个相当高的要求。
SQS只是一个云队列系统。根据你的描述,我不确定这会使你的系统更好。
首先,您已经在数据库中存储了所有内容,那么为什么还需要在队列中存储内容呢?如果希望在数据库中存储数据时具有队列语义,可以考虑使用SQL Server Service Broker(
https://technet.microsoft.com/en-us/library/ms345108(v=sql.90).aspx#sqlsvcbr_topic2
其次,听起来您可能有一个围绕任务的工作流,它可以扩展到不仅仅是一个队列,供代理提取任务。例如,您是否对这些任务有任何跟进(通过电子邮件向客户询问他们的服务如何,将任务搁置,直到客户回复您,等等)?如果是这样,您可能想看看简单的工作流服务(
https://aws.amazon.com/swf/
)或者,由于您已经在Microsoft的堆栈中,您可以查看Windows工作流(
https://msdn.microsoft.com/en-us/library/ee342461.aspx
http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html
)它支持重复数据消除,但限制在每秒300个事务(也就是说:大约100条消息/秒,用于标准的发送-接收-删除API。使用批处理显然这个数字可能要高得多,但考虑到您的用例,听起来您不可能在无需大量工作的情况下使用批处理)。