交换标头中出现Apache Camel设置路由异常错误

ljo96ir5  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(148)

我正在使用Camel sql组件,并希望在事务失败时使用onConsumeFailed更新带有异常堆栈跟踪的记录。
表格结构:CREATE TABLE IF NOT EXISTS库存(项目编号整数NOT NULL DEFAULT nextval('inventory_itemnbr_seq'::regclass),位置整数,位置类型字符变化(2),颜色字符变化(5),品牌字符变化(5),soh双精度,camel_is_read整数DEFAULT 0,例外字符变化(500),CONSTRAINT inventory_pkey PRIMARY KEY(项目编号))
在我的camel路径中,我使用了如下onConsumeFailed选项

sql://<select statement>?dataSource=#dataSource&onConsumeFailed=update inventory set camel_is_read = 0, exception=:#exception where itemNbr= :#itemNbr

我已经在路由上创建了onException,如下所示,并将头属性“exception”的根本原因设置为。

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

在路由执行过程中,如何从路由访问头属性?

相关问题