我正在反向设计一些将消息发送到Amazon SQS队列的代码。我知道队列的名称,可以在我的AWS控制台中找到它。但是,我不知道订阅了什么队列。我想看看消息是如何处理的。有没有一种简单的方法可以找到它?我在控制台或CLI中看不到任何东西......我希望能找到类似于rabbitmqctl的东西,它可以显示订阅者列表。
答案 0 :(得分:5)
您没有订阅SQS队列。 SQS队列具有侦听(通常是长轮询)队列以获取消息的侦听器。
任何拥有有效授权凭据的任何人都可以随时对其进行轮询(或不轮询)。
队列没有订阅者 - 主题,如在SNS中 - 有订阅者,每次发布消息时都会向所有订阅者广播消息。
有几个Cloudwatch metrics for SQS queues可用于确定是否正在轮询队列,但侦听器和队列之间的交互是与其他一些消息队列平台不同的模型,其中队列的侦听器维护持久连接(因此可能被枚举)。一个SQS监听器连接,接收任何可用的消息,直到最大允许或请求,断开¹,处理消息,然后重新连接以删除消息(否则消息最终变得可见,以便另一个监听器接收...或相同听众... SQS没有“谁”正在倾听的概念,因为一切都在HTTP上工作,当然,这是无国籍的。
¹当然,在HTTP保持活动状态下,侦听器可能在技术上不会断开与SQS API端点的TCP连接,但是当发生这种情况时没有状态保留,并且SQS无意识到侦听器“仍然连接”。