如何使Amazon SQS消息遵循FIFO

4
有没有一种方法可以真正按照FIFO(先进先出)的方式消费Amazon SQS消息?我尝试通过配置延迟消息传递,但这并没有帮助。
3个回答

2
Amazon SQS刚刚获得了FIFO队列,具有一次性处理和去重
引用: 今天我们通过支持FIFO(先进先出)队列,使SQS更加强大和灵活。我们正在现在的两个地区推出这种新类型的队列,并计划在2017年初在许多其他地区提供它。 这些队列旨在保证消息按发送顺序精确处理一次且无重复。 [...] [我强调]
正如强调的那样,这些新的FIFO SQS队列将使任何消费Amazon SQS消息的真正FIFO特殊考虑变得不必要,但尚未在所有SQS区域中提供[最初仅在美国东部(俄亥俄州)和美国西部(俄勒冈州)]。

1
简而言之,不行:
问题:Amazon SQS是否为消息提供先进先出(FIFO)访问?
答案:Amazon SQS不能保证在Amazon SQS队列中以FIFO顺序访问消息,主要是因为Amazon SQS的分布式特性。如果您需要特定的消息排序,请设计您的应用程序来处理它。

http://aws.amazon.com/sqs/faqs/


抱歉回复晚了。我正在寻找一些常用的模式,可以在应用程序中使用以实现这一目标。 - Arvind
2
@Arvind,您可以通过添加排序标记并进行手动排序来为您的消息添加排序,但这在分布式系统中存在许多问题。 - tster

1

需要按特定顺序到达的消息可能不适合使用标准SQS队列。但是,您可以在发送消息时设置消息序列计数器。在接收端,如果序列正确,可以继续处理消息。如果出现序列错误的消息,则等待正确的消息到来,然后处理正确的序列消息以及在之间到达的其他消息。

enter image description here

2016年11月17日,FIFO队列已在某些地区(美国东部(俄亥俄州)美国西部(俄勒冈州))引入,这补充了标准队列。消息发送和接收的顺序严格保留,并且一条消息只会被传递一次,在消费者处理并删除它之前一直可用;不会在队列中引入重复项。FIFO队列使用与标准队列相同的API操作,接收和删除消息以及更改可见超时的机制也相同。但是,在发送消息时,您必须指定消息组ID。enter image description here

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接