微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqs 队列有时不接收来自 sns 的消息

如何解决sqs 队列有时不接收来自 sns 的消息

我有一个用户执行操作时广播事件的主题。有 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","Statement": [
    {
      "Sid": "__owner_statement","Principal": {
        "AWS": "arn:aws:iam::********:root"
      },"Action": "SQS:*","Resource": "arn:aws:sqs:us-west-2:********:***********_*******"
    },{
      "Sid": "topic-subscription-arn:aws:sns:us-west-2:********:*****_******_*******","Action": "SQS:SendMessage","Resource": "arn:aws:sqs:us-west-2:********:***********_*******","Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sns:us-west-2:********:*****_******_*******"
        }
      }
    }
  ]
}

队列的配置:

enter image description here

如果需要更多信息,请告诉我。我将获得 aws 高级支持以找到问题。在那之前我想在这里发一次。感谢您的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?