簡體   English   中英

駱駝的收件人列表沒有迭代所有收件人

[英]Camel recipientList not iterating all recipients

我正在編寫一個Camel集成,它可以使用任意數量的查詢並針對任意數量的數據庫執行那些查詢。

路由首先將所有查詢放在文件夾中,然后使用拆分器按順序遍歷它們:

from("quartz2:quartzInitializer?cron={{sync.cron}}")
    .routeId("quartzInitializer")
    .bean(QueryHandler.class, "getQueries")
    .split(exchangeProperty(QueryHandler.Properties.QUERIES))
        .setProperty(Properties.CURRENT_QUERY, simple("body"))
        .to("direct:executeSingleQuery")
    .end();

在以上代碼段中,屬性QueryHandler.Properties.QUERIES包含兩個查詢文件位置:

config/sql/1__select_stat_machine.sql
config/sql/2__select_stat_session.sql

接下來,我發送迭代查詢的位置並從中構造一個收件人列表:

from("direct:executeSingleQuery")
    .routeId("executeSingleQuery")
    .bean(DataSourceHandler.class, "createEndpointsWithQuery")
    .recipientList(exchangeProperty(DataSourceHandler.Properties.QUERY_RECIPIENTS))
        .parallelProcessing()
    .log(LoggingLevel.INFO, String.format("Calling ${in.header.%s}", Exchange.RECIPIENT_LIST_ENDPOINT));

在以上代碼段中,參數DataSourceHandler.Properties.QUERY_RECIPIENTS包含兩個收件人:

sql:file:config/sql/1__select_stat_machine.sql?dataSource=datasource3&outputHeader=resultset
sql:file:config/sql/1__select_stat_machine.sql?dataSource=datasource2&outputHeader=resultset

但是,當我運行此命令時,僅調用了一個收件人,在這種情況下,僅調用了datasource2 ,該datasource2在傳遞給收件人列表的列表中的索引1處:

Calling sql://file:config/sql/1__select_stat_machine.sql?dataSource=datasource2&outputHeader=resultset
Calling sql://file:config/sql/2__select_stat_session.sql?dataSource=datasource2&outputHeader=resultset

我無法終生弄清楚自己在做什么錯。 我在某處缺少end()嗎? 我的拆分器是否有故障,還是我的收件人列表?

.recipientList(exchangeProperty(...))
   .log(LoggingLevel.INFO, String.format("Calling ${in.header.%s}", Exchange.RECIPIENT_LIST_ENDPOINT));

您將日志語句放在錯誤的位置。 基本上你已經建模路線的方法是:“請發送郵件給所有收件人,並之后 ,打印消息”。 事實是,在遍歷收件人列表之后,Camel變量保留了LAST收件人的URI。

在Spring DSL中更明顯:

您的駱駝路線正在做什么:

<recipientList>
  <header>...</header> 
</recipientList>
<log message="Done"/>

與您認為駱駝在做什么:

<recipientList>
  <header>...</header>
  <log message="Done"/>  
</recipientList>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM