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

时间:2018-07-31 19:33:23

标签: spring-boot spring-amqp

我有一个未解决的问题中提到的相同问题: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 个答案:

答案 0 :(得分:2)

它仅支持表达式;您可以解决它;例如通过使用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代码不熟悉;每个项目都会为此注释而滚动。