我有一个亚马逊SQS队列,我试图让它以这种方式工作:
当新消息添加到队列时,只有收到该消息的第一个客户端才会开始工作
对于其他人,该消息将在一段时间内不可见
是否可以使用Visibility Timeout执行此操作?
当消费者从SQS队列接收并处理消息时,消息仍然保留在队列中(直到消费者删除它) . 要确保其他使用者不处理相同的消息,您可以设置队列的 visibility timeout . 消费者处理完消息后,您可以从队列中删除消息 . 在可见性超时期间,没有其他消费者能够接收和处理相同的消息 .
除了设置长 Visibility Timeout ,最长12小时超时,没有其他方法可以"lock"消息 .
Visibility Timeout
但是,如果您真正担心的还包括错误/崩溃,您可以使用Dead-Letter-Queue重启策略来处理无法无限期处理的队列内容 .
2 回答
当消费者从SQS队列接收并处理消息时,消息仍然保留在队列中(直到消费者删除它) . 要确保其他使用者不处理相同的消息,您可以设置队列的 visibility timeout . 消费者处理完消息后,您可以从队列中删除消息 . 在可见性超时期间,没有其他消费者能够接收和处理相同的消息 .
除了设置长
Visibility Timeout
,最长12小时超时,没有其他方法可以"lock"消息 .但是,如果您真正担心的还包括错误/崩溃,您可以使用Dead-Letter-Queue重启策略来处理无法无限期处理的队列内容 .