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

如何完全禁用Apache Camel对特殊字符的解析以避免占位符报错?

解决Apache Camel解析含{{}}字符串报错的问题

问题重现

当处理包含{{}}格式的字符串时,Camel会将其识别为Simple语言的属性占位符尝试解析,导致抛出找不到对应属性的错误,示例错误日志如下:

2025-04-22 16:56:15,987 ERROR [org.apa.cam.qua.mai.CamelMainRuntime] (main) Failed to start application: org.apache.camel.FailedToCreateRouteException: Failed to create route actualRouteId at: >>> To[log:thisIs{{broken}}completely] <<< in route: Route(actualRouteId)[From[direct:someRoute] -> [To[log:thisI... because of Failed to resolve endpoint: log:thisIs{{broken}}completely due to: Property with key [broken] not found in properties from text: log:thisIs{{broken}}completely

问题主要出现在两个场景:

  • 使用Log组件记录含{{}}的字符串
  • 通过SQL查询映射Bean时,SQL或返回数据中包含{{}}

针对性解决方案

1. Log组件场景

方法一:使用raw()表达式包裹原始字符串

告诉Camel直接使用字符串内容,不触发任何解析:

// 静态字符串场景
.toD("log:${raw('thisIs{{broken}}completely')}")

// 动态内容场景(比如从消息体获取)
.toD("log:${raw(${body})}")

方法二:关闭Log组件的消息格式解析

在Log端点配置中添加useMessageFormat=false,禁用占位符解析:

.to("log:myLogger?message=thisIs{{broken}}completely&useMessageFormat=false")

方法三:转义占位符

将{{}}转义为\{{\}},仅适合静态字符串场景:

.to("log:thisIs\\{{broken\\}}completely")

2. JDBC与Bean映射场景

避免用simple()处理含{{}}的SQL

如果SQL语句中包含{{}},不要用simple()解析,改用raw()直接传入原始SQL:

.setBody(raw("SELECT * FROM table WHERE content = 'thisIs{{broken}}completely'"))
.toD("jdbc:outputType=SelectList&outputClass=my.wonderful.class")

动态JDBC端点的处理

如果JDBC端点参数中包含{{}},同样用raw()包裹对应部分:

.toD("jdbc:outputType=SelectList&outputClass=${raw('my.wonderful.class')}")

3. 全局禁用{{}}占位符解析

如果整个应用都不需要Camel解析{{}}格式的占位符,可以修改占位符的前缀后缀,让Camel不再识别{{}}:

配置文件方式(application.properties)

camel.properties.placeholder-prefix=[$[
camel.properties.placeholder-suffix=]]

代码配置方式

PropertiesComponent propertiesComponent = camelContext.getComponent("properties", PropertiesComponent.class);
// 自定义占位符前缀后缀,替换默认的{{}}
propertiesComponent.setPlaceholderPrefix("[$[");
propertiesComponent.setPlaceholderSuffix("]]");

这样Camel会使用新的前缀后缀解析属性,原有的{{}}字符串会被当作普通文本处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:06:17