Amazon AWS SQS FIFO 队列发送消息问题



当使用带有MessageDeduplicationId的函数发送消息以防止重复时sendMessage()。 但是,sendMessage 函数始终返回 true。换句话说,sendMessage函数始终返回一个值,表示消息已成功发送到 SQS,但消息实际上不可用。

我根据sendMessage()返回值更改数据库中的字段"sent_to_sqs"。

有人可以帮助我吗?

设计假设是,如果您发送的消息具有相同的重复数据删除 ID,那么该消息与您已经发送的消息完全相同(否则,它不应该具有相同的重复数据删除 ID),因此 SQS 假装再次接受它,假设您这边一定出了问题,从而阻止您意识到该消息在第一次提交时已经提交。

"sendMessage函数始终返回一个值,表示消息已成功发送到 SQS">

是的,因为它已经是,更早

SQS 不会验证消息是否确实是重复的 - 它假定它是重复的,因为您已通过在 5 分钟内提交相同的重复数据删除 ID 来声明它。 如果消息已被处理,则根据设计,它将在队列中不可用。

邮件重复数据删除 ID

用于对已发送消息进行重复数据删除的令牌。如果成功发送了具有特定邮件重复数据删除 ID 的邮件,则成功接受使用相同邮件重复数据删除 ID 发送的任何邮件,但不会在 5 分钟的重复数据删除间隔内传递。

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html#FIFO-queues-understanding-logic

最新更新