aws sqs
SQS( 简单消息队列 )是Amazon Web Services的消息队列即服务产品。 它仅支持少量的消息传递操作,远没有AMQP这样的复杂性,但是由于易于理解的界面和即服务的性质,它在许多情况下都非常有用。
但是SQS有多快? 它如何缩放? 它仅适用于低容量消息传递,还是可以用于高负载应用程序?
如果您知道SQS的工作原理,并且想跳过测试方法的详细信息,则可以直接跳至测试结果 。
SQS语义
SQS公开基于HTTP的接口。 要访问它,您需要AWS凭证对请求进行签名。 但这通常是由客户端库完成的(存在用于大多数流行语言的库;我们将使用官方Java SDK )。
与消息相关的基本操作是:
- 发送最大为256 KB且编码为字符串的消息。 邮件最多可以发送10个(但总大小上限为256 KB)。
- 收到一条消息。 如果队列中可用,则最多可以批量接收10条消息
- 长时间轮询消息。 如果最初没有可用的消息,则请求最多等待20秒
- 删除留言
还有其他一些操作,涉及安全性,延迟消息传递以及更改消息的可见性超时,但是我们不会在测试中使用它们。
SQS提供至少一次的交货保证。 如果收到一条消息,则将其阻塞一段称为“可见性超时”的时间。 除非在该期限内删除该邮件,否则它将再次可以传递。 因此,如果处理消息的节点崩溃,它将再次被传递。 但是,我们也面临两次处理消息的风险(例如,删除消息时网络连接死了,或者SQS服务器死了),这必须在应用程序侧进行管理。
SQS是复制的消息队列,因此可以确保一旦发送了消息,