我有一條復雜的路線,如下所示(部分):.when(header("KEY_1").isNull()).choice() .when(header("KEY_2").isNull()) .split().method(SplitExample.class, "invokeSplitter").streaming().parallelProcessing().executorService(threadPoolExecutor) // first split .policy(requires_new) .bean(SplitExample.class, "enrich") .bean(persister,"populateRecordAndXRef") .bean(initializer, "initialize") .bean(validator, "validateInMsg") .bean(suppressResolver, "resolve") .choice() .when(header("KEY_3").isNull()) .bean(MsgConverter.class,"doInvoke" ) // #1 property or header set here .split(body()) // second split .bean(validator, "validateOutMsg") .to(toURI.toArray(new String[ toURI.size()])) .process(new Processor() { @Override public void process(Exchange exchange) throws Exception { System.out.println(exchange.getException()); // #2 queue server is shut down here so that transaction failure occurs }我還定義了以下異常策略: onException(JMSException.class) .handled(true) .process(new QueueOperationFailureProcessor()); // #3 property or header should be accessible here現在,我的目的是將 Bean 設置為 Exchange 屬性(“RECOVERY_DETAIL”),并在 中檢索相同的 Bean。MsgConverter (#1)QueueOperationFailureProcessor (#3)通過調試,我可以看到 RECOVERY_DETAIL.在 JMSException 上,當我的異常策略啟動時,我想檢索 中的屬性(“RECOVERY_DETAIL”)。in-line processor (#2)QueueOperationFailureProcessor (#3)但碰巧的是 - 可用的交易所與可用的交易所不同,并且該屬性(“RECOVERY_DETAIL”)在哪里可以找到。QueueOperationFailureProcessor (#3)in-line processor (#2)請幫幫我。附言:我的駱駝版本是2.16.0,我可能無法使用任何需要版本升級的解決方案。
Apache Camel:如何在拆分和后續異常后在多個交易所之間保留屬性或標頭?
慕蓋茨4494581
2022-09-01 17:37:19