2014-01-21 475 views
0

我是Apache駱駝的新手。我有很常見的用例,我正在努力配置駱駝路線。用例是執行上下文Apache駱駝嵌套路由

  1. 使用執行上下文更新數據庫。
  2. 然後,使用上的執行上下文事件,創建一個字節的消息,併發送在MQ。
  3. 然後,在下一步驟中再次使用的執行上下文,並執行事件處理。
  4. 使用執行上下文更新數據庫。

所以基本上它的種類嵌套路線。在下面的配置中,我需要訪問executionController在updateSchedulerState,sendNotification,processEvent和updateSchedulerState中創建的executionContext,即分別註釋爲1,2,3和4的步驟。

from("direct:processMessage") 
    .routeId("MessageExecutionRoute") 
    .beanRef("executionController", "getEvent", true) 
    .beanRef("executionController", "updateSchedulerState", true) (1) 
    .beanRef("executionController", "sendNotification", true)  (2) 
       .beanRef("messageTransformer", "transform", true)  
       .to("wmq:NOTIFICATION") 
    .beanRef("executionController", "processEvent", true)   (3) 
       .beanRef("eventProcessor", "process", true) 
       .beanRef("messageTransformer", "transform", true)  
       .to("wmq:EVENT") 
    .beanRef("executionController", "updateSchedulerState", true); (4) 

請讓我知道如何配置上述用例的路由。

感謝, Vaibhav的

回答

0

所以你需要在不同的點在路由訪問此executionContext在你的豆?

如果我理解正確的話,你可以把這個執行上下文在交換Property,它會持續整個路線。

設置交換性能可以通過Exchange.setProperty()方法或各種駱駝DSL功能來完成,例如是這樣的:

from("direct:xyz) 
    .setProperty("awesome", constant("YES")) 
    //... 

可以從豆中加入Exchange類型的方法參數訪問交換性能,如這樣的:

public class MyBean { 
    public void foo(Something something, Exchange exchange) { 
     if ("YES".equals(exchange.getProperty("awesome"))) { 
      // ... 
     } 
    } 
} 

或通過@Property這樣的:

public class MyBean { 
    public void foo(Something something, @Property String awesome) { 
     if ("YES".equals(awesome)) { 
      // ... 
     } 
    } 
} 

這假定您正在使用更高版本的駱駝。

這是否幫助?