代码之家  ›  专栏  ›  技术社区  ›  nemo

将属性占位符与Spring AMQP@SendTo注释一起使用

  •  1
  • nemo  · 技术社区  · 6 年前

    我在这个未回答的问题中也提到了同样的问题: Spring Cloud AWS SQS SendTo annotation with property placeholder

    但是,我再次更简洁地提出这个问题,希望这次能得到答复。

    正如我在提到的问题中提到的,这个问题: https://github.com/spring-cloud/spring-cloud-aws/issues/65 似乎表明 @SentTo 批注应支持属性占位符。

    然而,当涉及到 @SendTo 注释,Spring AMQP文档只讨论SpEL(bean求值'{…}'和运行时'!{…}),但没有提到属性占位符。

    当我尝试使用 @SendTo("${my.reply.routing.key}") @SendTo("${my-exchange}/${my.reply.routing.key}") ,被逐字解释,没有正确插入。

    在这种情况下,我是否可以使用属性占位符?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gary Russell    6 年前

    它只支持表达式;但是您可以处理它;例如通过使用bean引用:

    @SpringBootApplication
    public class So51620793Application {
    
        public static void main(String[] args) {
            SpringApplication.run(So51620793Application.class, args);
        }
    
        @RabbitListener(queues = "foo")
        @SendTo("#{@sendTo}")
        public String listen(Message in) {
            System.out.println(in);
            return new String(in.getBody()).toUpperCase();
        }
    
        @Bean
        public String sendTo(@Value("${foo.bar}") String sendTo) {
            return sendTo;
        }
    
    }
    

    我不熟悉AWS代码;每个项目都为这个注释滚动自己的代码。