我创建了以下代码和匹配的配置。邮件的接收效果很好,但是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;
    }
}

最佳答案

我究竟做错了什么?


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

是什么使您相信SpEL在此得到支持?我在解析这个问题时遇到了麻烦...


  看我的依赖版本,@SendTo注释应该支持这种表达。

关于java - 为什么SpEL在Spring Boot和Spring Cloud Stream @SendTo中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41672409/

10-13 04:26