是否可以查看订阅了 AWS SQS 队列的内容?

Is it possible to see what is subscribed to an AWS SQS queue?

我正在对一些向 Amazon SQS 队列发送消息的代码进行逆向工程。我知道队列的名称,并且可以在我的 AWS 控制台中找到它。但是,我不知道队列中订阅了什么。我想看看消息是如何被处理的。有没有简单的方法可以找到它?我在控制台或 CLI 中看不到任何东西...我希望有类似于 rabbitmqctl 的东西,它可以显示订阅者列表。

您没有订阅 SQS 队列。 SQS 队列具有轮询(通常是长轮询)消息队列的侦听器。

任何人在任何地方只要拥有有效的、授权的凭据并有权从 接收消息,就可以随时轮询(或不轮询)。

队列没有订阅者——主题,就像在 SNS 中一样——有订阅者,每次发布消息时消息都会广播给所有订阅者。

有几个 Cloudwatch metrics for SQS queues 可以用来确定 是否正在轮询 队列,但是侦听器和队列之间的交互是一种不同于其他模型的模型消息队列平台,其中队列的侦听器保持持久连接(因此可能被枚举)。 SQS 侦听器连接,接收任何可用消息,直至达到允许或请求的最大值,断开连接¹,处理消息,然后重新连接以删除消息(否则消息最终变得可见,供另一个侦听器接收...或相同侦听器...SQS 没有 "who" 正在侦听的概念,因为一切都在 HTTP 上运行,当然,HTTP 是无状态的。


¹当然,对于 HTTP keep-alive,侦听器在技术上可能不会断开与 SQS API 端点的 TCP 连接,但发生这种情况时不会保留任何状态,并且 SQS 无法感知到侦听器是 "still connected."