【问题标题】:AWS SQS: Is it a way SQS call me consumer, every time a messages is pushedAWS SQS:每次推送消息时,SQS 都称我为消费者吗?
【发布时间】:2017-07-18 16:35:21
【问题描述】:

AWS SQS 是否可以调用我的 REST API?基本上,只要将消息推送到 AWS SQS,我就想听到它并执行所需的操作。我可以安排一个可以每秒提取消息的侦听器,但这不是优化的解决方案,而且队列可能是空的(有时)。

提前致谢!!

【问题讨论】:

    标签: java amazon-web-services aws-lambda aws-sdk amazon-sqs


    【解决方案1】:

    一些想法:

    使用发布者/订阅者

    研究在 SNS/SQS 中使用发布者-订阅者模型,以便您将消息发布到 SNS 并通过 SQS 订阅它。如果您绝对需要在消息发布后立即处理它,您可以发布到 SNS 并在您的 SQS 订阅之外设置另一个使用者(例如调用您的 Rest API 的lambda subscriber?)来处理它。

    SQS 长轮询

    关于 SQS,听起来您会从长轮询中受益。来自文档:

    长轮询有助于降低您使用 Amazon SQS 的成本,因为它可以减少 空响应的数量(当没有可用的消息时 返回以回复发送到 Amazon SQS 的 ReceiveMessage 请求 队列)并消除错误的空响应(当消息 在队列中可用但不包含在响应中):

    • 长轮询通过允许亚马逊减少空响应的数量 SQS 在发送消息之前等待队列中的消息可用 回复。除非连接超时,否则对 ReceiveMessage 请求至少包含一个可用的 消息,最多为指定的消息的最大数量 接收消息操作。
    • 长轮询通过查询所有(而不是有限数量)服务器来消除错误的空响应。
    • 只要有任何消息可用,长轮询就会返回消息。

    同样来自文档,要以编程方式启用长轮询,请对这些 SQS 操作中的任何一个使用以下内容:

    参考:

    【讨论】:

      【解决方案2】:

      听起来您最好使用 SNS 而不是 SQS。你想让 SQS 做的事情,SNS 的设计目的是:

      您可以使用 Amazon SNS 将通知消息发送到一个或多个 HTTP 或 HTTPS 端点。当您为端点订阅主题时, 您可以向主题发布通知,Amazon SNS 会发送一个 HTTP POST 请求将通知的内容传送到 订阅的端点。当您订阅端点时,您选择 Amazon SNS 是使用 HTTP 还是 HTTPS 将 POST 请求发送到 端点。如果您使用 HTTPS,那么您可以利用支持 在 Amazon SNS 中用于以下...

      http://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html

      【讨论】:

        猜你喜欢
        • 2018-12-23
        • 2023-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-25
        • 2020-10-02
        • 2019-06-10
        • 2021-10-04
        相关资源
        最近更新 更多