2015-05-18 2 views
1

Необходимо опросить несколько таблиц соединителя базы данных. При попытке применить отдельный опрос на столах с использованием источника композитногоMule: Опрос на нескольких таблицах соединителя базы данных

<composite-source> 
    <poll> 
    <db:select config-ref="databaseConnector"/> <!--select on table 1--> 
    </poll> 
    <poll> 
    <db:select config-ref="databaseConnector"/> <!--select on table 2--> 
    </poll> 
</composite-source> 

Получение Poller ошибки уже зарегистрированы на конечной точке URI. Как я могу опросить несколько таблиц для обновленных данных с помощью соединителя базы данных.

ответ

2

Используйте три потока:

<flow name="poll-table-1"> 
    <poll frequency="...">...</poll> 
    <flow-ref name="table-data-processor" /> 
</flow> 

<flow name="poll-table-2"> 
    <poll frequency="...">...</poll> 
    <flow-ref name="table-data-processor" /> 
</flow> 

<flow name="table-data-processor"> 
    ... 
</flow> 
+0

Спасибо @David. Но почему один поток не работал. Ужасно было --connectorexception: на этом коннекторе уже зарегистрирован прослушиватель на endpointuri: polling: –

+0

Работает ли мое решение? Не совсем понятно, почему единственный поток выходит из строя, возможно, так как Mule внутренне создает URI конечной точки для опроллера, который должен быть уникальным, но не уникальным с несколькими участниками в одном потоке? –

+0

Я все еще проверяю код, столкнувшись с проблемой отказа связи, но он смотрит на меня, связанные с драйверами, будет обновлять, работал ли он или нет после его завершения. –

0

Вы можете попробовать следующий способ: -

<composite-source> 
     <poll frequency="10000" doc:name="Poll"> 
     <processor-chain > 
     <db:select config-ref="Oracle_Configuration" doc:name="Database"> 
      <db:parameterized-query><![CDATA[select * from Table1]]></db:parameterized-query> 
     </db:select> 
     <logger level="INFO" message="Your Payload from Table1:- ....." doc:name="Logger"/> 

     <db:select config-ref="Oracle_Configuration" doc:name="Database"> 
      <db:parameterized-query><![CDATA[select * from Table2]]></db:parameterized-query> 
     </db:select> 
     <logger level="INFO" message="Your Payload from Table2:- ...." doc:name="Logger"/> 
     </processor-chain> 
     </poll> 
</composite-source> 
     <logger level="INFO" message="The remaining flow " doc:name="Logger"/> 

Это работает хорошо для меня :)

+0

Использование одного опроса будет вопрос, что мы не можем указать различные конфигурации poller для разных таблиц. Мне нужно использовать водяной знак для идентификации данных, вставленных после последней загрузки. Конфигурация водяного знака также будет одной для всех таблиц. Есть ли способ, которым мы можем указать различный poller для нескольких таблиц. –

Смежные вопросы