Spring 集成 enrichHeaders
Spring integration enrichHeaders
我有一个 header“BackOffTime”。我需要更新它,但使用另一个 header“failCount”。
像这样:
长 backOff = Math.pow(2, headers.get("failCount"));
enricherSpec.headerExpression("BackOffTime", backOff, true);
但问题是,该方法 enrichHeaders() 没有 lambda with (message, headers) ->
所以我无法从“failCount”中获取值header。
有这样的方法吗?:
.enrichHeaders(enricherSpec -> {
Long backOff = Math.pow(2, headers.get("failCount"));
enricherSpec.headerExpression("BackOffTime", backOff, true);
})
我找到了一种获取方法 header,但它只允许获取它,而不能在任何函数中使用它:
enricherSpec.headerExpression("BackOffTime", "headers['failCount']", true);
考虑这样做:
.enrichHeaders(h -> h.headerFunction("BackOffTime", m -> Math.pow(2, m.getHeaders().get("failCount", Double.class)), true))
top-level Consumer<HeaderEnricherSpec>
lambda 仅在配置阶段调用一次。您需要的是每条消息的函数调用。因此它必须是 HeaderEnricherSpec
上的一个选项。在我们的例子中,它是 headerFunction()
。它也可以用 headerExpression()
完成,但我发现 Java 语法对 DSL 更方便。
我有一个 header“BackOffTime”。我需要更新它,但使用另一个 header“failCount”。
像这样:
长 backOff = Math.pow(2, headers.get("failCount"));
enricherSpec.headerExpression("BackOffTime", backOff, true);
但问题是,该方法 enrichHeaders() 没有 lambda with (message, headers) ->
所以我无法从“failCount”中获取值header。
有这样的方法吗?:
.enrichHeaders(enricherSpec -> {
Long backOff = Math.pow(2, headers.get("failCount"));
enricherSpec.headerExpression("BackOffTime", backOff, true);
})
我找到了一种获取方法 header,但它只允许获取它,而不能在任何函数中使用它:
enricherSpec.headerExpression("BackOffTime", "headers['failCount']", true);
考虑这样做:
.enrichHeaders(h -> h.headerFunction("BackOffTime", m -> Math.pow(2, m.getHeaders().get("failCount", Double.class)), true))
top-level Consumer<HeaderEnricherSpec>
lambda 仅在配置阶段调用一次。您需要的是每条消息的函数调用。因此它必须是 HeaderEnricherSpec
上的一个选项。在我们的例子中,它是 headerFunction()
。它也可以用 headerExpression()
完成,但我发现 Java 语法对 DSL 更方便。