将 属性 占位符与 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代码;每个项目都为此注释滚动自己的。
我在这个未回答的问题中遇到了同样的问题: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代码;每个项目都为此注释滚动自己的。