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



我遇到了这个未回答的问题中提到的相同问题:带有属性占位符的Spring Cloud AWS SQS SendTo注释

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

正如我在提到的问题中提到的,这个问题: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代码;每个项目都为此注释滚动自己的项目。

最新更新