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

Use Property Placeholder with Spring AMQP @SendTo Annotation

我在这个未回答的问题中遇到了同样的问题: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}") 时,正在按字面解释并且未正确插入。

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

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