2017-02-27 104 views

回答

2

一对夫妇的想法:

使用发布/订阅

考虑使用与SNS/SQS发行者 - 订阅模式,使您发布一条消息,SNS,并通过SQS订阅它。如果您绝对需要在发布消息时处理消息,则可以发布到SNS并除SQS订阅(例如调用Rest API的lambda subscriber)之外设置另一个消费者来处理它。

SQS长轮询

关于SQS,这听起来像你会从长轮询中受益。从文档:

长轮询有助于减少 (空响应的数量减少你使用Amazon SQS的费用时,有没有提供给回复发送到亚马逊SQS 一个ReceiveMessage请求 返回消息队列),并消除错误空应答(当消息是 在队列中可用的但不包括在响应):

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

另外,以编程方式启用长轮询,使用下列任何这些SQS操作:

参考:

1

听起来像是你将用很多替代SQS SNS的更好。你正在试图获得SQS做,SNS的目的是要做到:

您可以使用Amazon SNS通知消息发送给一个或多个 HTTP或HTTPS端点。当您向某个主题订阅端点时,您可以发布通知到该主题,Amazon SNS会发送一个 HTTP POST请求,将通知内容传递给 订阅端点。订阅端点时,您选择 无论Amazon SNS使用HTTP还是HTTPS将POST请求发送到端点 。如果使用HTTPS,那么你可以采取的支持 在亚马逊SNS以下的优点...

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