我有一个在用户执行操作时广播事件的主题。有 2 个队列订阅了这个主题。但是他们在 3-4 次中只收到一次消息。有时两个主题都没有收到消息。有时只有一个人收到,有时两个人都收到。它在 4 周前开始发生。
到目前为止我尝试过的解决方案:
我重新检查了权限和政策。一切似乎都对。 (如果这是问题,那么我根本不应该收到消息)
我检查了那些相同的队列是否正在某处运行,这些队列在生产服务器接收消息之前从队列中接收和删除消息
我删除并重新创建了主题、队列和订阅
我查看了 aws 论坛,到处都是堆栈溢出
主题的传递重试策略:
{
"http": {
"defaultHealthyRetryPolicy": {
"numRetries": 3,
"numNoDelayRetries": 0,
"minDelayTarget": 20,
"maxDelayTarget": 20,
"numMinDelayRetries": 0,
"numMaxDelayRetries": 0,
"backoffFunction": "linear"
},
"disableSubscriptionOverrides": false
}
}
主题访问策略:
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:GetTopicAttributes",
"SNS:SetTopicAttributes",
"SNS:AddPermission",
"SNS:RemovePermission",
"SNS:DeleteTopic",
"SNS:Subscribe",
"SNS:ListSubscriptionsByTopic",
"SNS:Publish",
"SNS:Receive"
],
"Resource": "arn:aws:sns:us-west-2:********:*****_******_*******",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "*********"
}
}
}
]
}
队列的访问策略:
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__owner_statement",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:root"
},
"Action": "SQS:*",
"Resource": "arn:aws:sqs:us-west-2:********:***********_*******"
},
{
"Sid": "topic-subscription-arn:aws:sns:us-west-2:********:*****_******_*******",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SQS:SendMessage",
"Resource": "arn:aws:sqs:us-west-2:********:***********_*******",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:sns:us-west-2:********:*****_******_*******"
}
}
}
]
}
如果需要更多信息,请告诉我。我将获得 aws 高级支持以找到问题。在那之前我想在这里发一次。感谢您的帮助。