为什么SpEL不能在Spring Boot和Spring Cloud Stream @SendTo中工作

时间:2017-01-16 08:45:01

标签: java spring-boot rabbitmq spring-el spring-cloud-stream

我创建了以下代码和匹配配置。邮件的摄取效果很好,但根本不评估SpEL,因此创建了一个名为表达式的新Exchange ...

查看我的依赖项版本@SendTo注释应该支持这种表达式...

我做错了什么?

我正在使用RabbitMQSpring Boot 1.4.3

@EnableBinding(CommandChannel.class)
public class CommandSink {

    private static final Logger LOGGER = LoggerFactory.getLogger(CommandSink.class);

    @StreamListener(CommandChannel.INPUT)
    @SendTo("!{request.messageProperties.headers['reply_to']}")
    public String processCommand(@Payload String cmd, @Header("reply_to") String replyToQueue){
        LOGGER.info("Got a {} command and I'll reply to {}", cmd, replyToQueue);
        String result = "geil: " + cmd;
        return result;
    }
}

1 个答案:

答案 0 :(得分:1)

  

我做错了什么?

没有; bean后处理器中根本没有代码来评估那里的SpEL表达式;该值是目标的简单字符串值(通道名称)。

是什么让您相信SpEL在那里受到支持?我在解析这个问题时遇到了麻烦...

  

查看我的依赖项版本@SendTo注释应该支持这种表达式...