如何使用属性中的 Spring @MessageMapping 来设置注释属性

How to use a Spring @MessageMapping from properties to set an annotation attribute

我正在使用 SQS spring-boot:spring-cloud, 我想外部化参数,根据活动配置文件检索值

@MessageMapping("static.queue")
public void receiveMessage(Payload payload) {
  // ...
}

有什么办法可以解决这个问题吗?

类似

@MessageMapping("${properties.dynamic}")
public void receiveMessage(Payload payload) {
  // ...
}

我会尝试两种选择:

  1. 使用项目spring-could-aws。您可以使用 @SqsAnnotation 注释您的 SQS 队列侦听器。
  2. 使用JMS 接口访问SQS 队列。在这种情况下,您可以使用 plain Spring JMS features(例如 @JmsListener)。
  3. @MessageMapping 支持 MessageMapping 注释中的表达式:

public class 示例 {

@MessageMapping("${spring.app}")
public void receiveMessage(Payload payload)  {
    // do
}}

在 yml 文件中:

spring:
  profiles: prod
  app: 'queueName1'

spring:
  profiles: dev
  app: 'queueName2'