Я использую Apache Верблюд с различными маршрутами, работающими внутри КОНТЕЙНЕРА.
У меня проблемы с этим маршрутом: getSalesNumber , который получает номер продажи для указанного c человек. Проблема в том, что этот маршрут читает содержимое таблицы с именем TABLE_AGENT_MAIL , и если я вставлю новую строку в эту таблицу, маршрут не будет читать ее, и мне придется перезапустить контейнер, чтобы он заработал.
Это маршрут:
<route id="getSalesNumber">
<from uri="direct:getSalesNumber"/>
<setHeader headerName="AGENT_ID">
<simple>${body.agent_id}</simple>
</setHeader>
<log message="Searching agent code for order #${headers.WEB_ORDER.increment_id} - agent_id: ${headers.AGENT_ID}"/>
<recipientList>
<simple>sqlServer:SELECT AGENT_CODE FROM TABLE_AGENT_MAIL WHERE EMAIL=:#AGENT_ID?outputType=SelectOne</simple>
</recipientList>
<setHeader headerName="SALES_REP_NUM">
<simple>${body}</simple>
</setHeader>
<log message="Sales Representative number: ${body}" loggingLevel="DEBUG" />
</route>
Маршрут называется здесь:
<route autoStartup="true" id="TaxCalculator">
<from uri="direct:calculateTAXEBSOrder"/>
<doTry>
<to uri="direct:getSalesNumber" />
<to uri="direct:getPriceListName" />
<to uri="spCreateProcessor"/>
<log message="${body}" />
<to uri="spTaxParametersProcessor"/>
<log message="${body}" />
<to uri="mybatis:calcOrderTax?statementType=SelectOne"/>
<log message="${body}" />
<doCatch>
<exception>java.lang.Exception</exception>
<log message="${exception.message}" />
<setHeader headerName="Exchange.HTTP_RESPONSE_CODE">
<constant>500</constant>
</setHeader>
<setHeader headerName="exception.message">
<simple>${exception.message}</simple>
</setHeader>
</doCatch>
</doTry>
<to uri="spEbsTaxResponseProcessor"/>
<setHeader headerName="correlationId">
<constant>ORDER</constant>
</setHeader>
</route>
Почему это происходит? Зачем мне перезапускать контейнер?
Я думал о создании Dynami c receientList , но мне не удалось.
Не могли бы вы помочь мне исправить это? Это раздражает.