Apache Camel 在 Exchange 中设置路由异常 Header
Apache Camel Set route Exception in Exchange Header
我正在使用 Camel sql 组件,并希望在事务失败时使用 onConsumeFailed 来更新记录,但堆栈跟踪异常。
Table 结构:
创建 TABLE 如果不存在库存
(
itemnbr 整数 NOT NULL DEFAULT nextval('inventory_itemnbr_seq'::regclass),
位置整数,
位置类型字符 varying(2) ,
颜色字符变化(5) ,
品牌特征不同(5),
双精度,
camel_is_read 整数默认 0,
异常字符 varying(500) ,
约束 inventory_pkey 主键 (itemnbr)
)
在我的骆驼路线中,我使用了如下的 onConsumeFailed 选项
sql://<select statement>?dataSource=#dataSource&onConsumeFailed=update inventory set camel_is_read = 0, exception=:#exception where itemNbr= :#itemNbr
我在路由上创建了 onException,如下所示,并将根本原因设置为 header 属性 "exception" as .
onException(Exception.class).process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Throwable ex = exchange.getProperty(Exchange.EXCEPTION_CAUGHT,
Throwable.class);
exchange.getIn().setHeader("exception", ex.getCause());
}
});
当事务发生异常时,更新行时抛出以下错误
org.apache.camel.RuntimeExchangeException:Cannot find key [exception] in message body or headers to use when setting named parameter in query
我们如何在路由执行期间从路由访问 header 属性?
您可以使用简单的表达式语言来获取异常
异常=:#${异常}
https://camel.apache.org/components/next/languages/simple-language.html
我正在使用 Camel sql 组件,并希望在事务失败时使用 onConsumeFailed 来更新记录,但堆栈跟踪异常。
Table 结构: 创建 TABLE 如果不存在库存 ( itemnbr 整数 NOT NULL DEFAULT nextval('inventory_itemnbr_seq'::regclass), 位置整数, 位置类型字符 varying(2) , 颜色字符变化(5) , 品牌特征不同(5), 双精度, camel_is_read 整数默认 0, 异常字符 varying(500) , 约束 inventory_pkey 主键 (itemnbr) )
在我的骆驼路线中,我使用了如下的 onConsumeFailed 选项
sql://<select statement>?dataSource=#dataSource&onConsumeFailed=update inventory set camel_is_read = 0, exception=:#exception where itemNbr= :#itemNbr
我在路由上创建了 onException,如下所示,并将根本原因设置为 header 属性 "exception" as .
onException(Exception.class).process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Throwable ex = exchange.getProperty(Exchange.EXCEPTION_CAUGHT,
Throwable.class);
exchange.getIn().setHeader("exception", ex.getCause());
}
});
当事务发生异常时,更新行时抛出以下错误
org.apache.camel.RuntimeExchangeException:Cannot find key [exception] in message body or headers to use when setting named parameter in query
我们如何在路由执行期间从路由访问 header 属性?
您可以使用简单的表达式语言来获取异常
异常=:#${异常}
https://camel.apache.org/components/next/languages/simple-language.html