我有一个未解决的问题中提到的相同问题: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}")
时,是按字面意义解释的,并且没有正确插值。
在这种情况下,我可以使用属性占位符吗?
答案 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代码不熟悉;每个项目都会为此注释而滚动。