【问题标题】:Spring Integration Java DSL - Http Outbound Gateway uri variable ExpressionSpring Integration Java DSL - Http Outbound Gateway uri 变量表达式
【发布时间】:2015-11-11 11:08:01
【问题描述】:

我有一个 Http 出站网关,我想在其中设置一个带有消息标头值的 uri 变量。我可以看到可以这样做:

            .handle(Http
                    .outboundGateway(serviceUri, restTemplate)
                    .uriVariable("var", expression)
                    .httpMethod(HttpMethod.POST)

表达式的类型为org.springframework.expression.Expression。如何为 JmsHeaders.CORRELATION_ID 值创建这样的 Expression 对象?我在任何地方都找不到任何例子。我知道 String SPEL 会是 "headers['correlationId']",但我不知道如何将其转换为 Expression 对象?

我正在使用spring-integration-java-dsl:1.1.0.RELEASE

【问题讨论】:

    标签: java spring spring-integration spring-el


    【解决方案1】:

    this answer to a similar question

    请注意,JmsHeaders.CORRELATION_ID 实际上是 jms_correlationId。使用常量更安全...

    PARSER.parseExpression("headers['" + JmsHeaders.CORRELATION_ID + "']");
    

    【讨论】:

    • 感谢加里。是的,我正在使用JmsHeaders 中的常量。最后,我将表达式创建为文字 (new LiteralExpression("headers['" + JmsHeaders.CORRELATION_ID + "']")),我认为这也是有效的?
    • 否;这是不正确的; LiteralExpression 是一个错误的文字 - 即它将变量设置为构造函数中的确切文字。 LiteralExpressions 不被评估,getValue() 只是返回传递给构造函数的值。您需要解析表达式,以便在运行时对其进行评估。
    • 啊,好的。我将使用你提供的表达式然后加里。
    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多