目前,根据我对这些问题的理解(这里,和这里),在AWS Messaging for Spring Boot中,必须将@SqsListener注释定义中的队列名称或队列url设置为Spring可以的静态字符串启动时读取。您不能将其设置为变量或队列列表,以便您可以定义一种方法并让该方法作为所有这些 SQS 队列的处理程序。
我的应用程序中有超过 40 个队列。我想做的是取出其中一些队列,将它们放入列表中,并将其提供给 @SqsListener 注释,以便我可以为这 X 个队列使用一种方法,并将一组不同的队列 Y 放入另一个方法的注释。但我好像做不到这一点。是这样吗?还有其他方法可以做到这一点吗?
我开始不喜欢
spring-cloud-aws-messaging
maven 包的实现,在一个方法上使用 @SqsListener 注释,该方法“侦听”特定队列并在新消息出现时调用该方法。尤其重要的是,因为它迫使我使用 AWS Java SQS SDK 1.0,而不是能够使用 2.0。我宁愿在春季自己以某种方式管理民意调查,但我不知道该怎么做。如何在 Spring Boot 中轮询 SQS 队列列表?如果我可以将其配置为长轮询大约 20 秒(根据 AWS 的最大值),并且如果它找到一条消息,它会返回该消息并开始下一次轮询,我希望如此。这可能吗?
我能够使用 spring cloud aws 3.0 库动态注册 sqs 监听器。您可以在这里找到我的完整答案