You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Header条件复制Apache Camel消息?

根据Header拆分并复制Apache Camel消息的实现方案

要实现将单条消息按Header多值拆分为多个副本、每个副本对应单个Header值的需求,你可以使用Apache Camel的Split组件配合消息处理器来完成,核心逻辑是拆分Header中的多值字符串,再为每个拆分结果重置Header字段。

Java DSL 实现示例

from("direct:start")
    // 按逗号拆分Header中"key"字段的多值内容
    .split(simple("${header.key.split(',')}"))
    // 按需禁用并行处理(默认并行,若需串行则添加此配置)
    .parallelProcessing(false)
    // 重置每个消息副本的"key" Header
    .process(exchange -> {
        String singleValue = exchange.getIn().getBody(String.class).trim();
        exchange.getIn().setHeader("key", singleValue);
    })
    // 后续处理逻辑,此处示例为打印日志
    .log("消息副本处理完成,Header key = ${header.key}");

XML DSL 实现示例

<route>
    <from uri="direct:start"/>
    <split>
        <!-- 拆分Header的多值内容 -->
        <simple>${header.key.split(',')}</simple>
        <!-- 去除空格后重置Header -->
        <setHeader name="key">
            <simple>${body.trim()}</simple>
        </setHeader>
        <!-- 后续处理步骤 -->
        <log message="消息副本处理完成,Header key = ${header.key}"/>
    </split>
</route>

关键说明

  • Split组件会自动为每个拆分出的元素生成独立的消息副本,原消息的其他Header和Body会被默认继承,仅需修改目标Header即可。
  • 若Header中的值包含空格(如value1, value2),通过trim()方法可以去除首尾空格,保证Header值的准确性。
  • 并行处理默认开启,若业务需要串行处理拆分后的消息,在Java DSL中添加.parallelProcessing(false)即可。

内容的提问来源于stack exchange,提问作者alguein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:10:26