Apache Camel вставляет данные из Postgre в очередь AMQ. результирующий бесконечный цикл - PullRequest
0 голосов
/ 05 ноября 2019

Я хочу выбрать все свои данные в моей таблице postgre и отправить их в Amq. Это то, что я сделал до сих пор.

<route id="insert">
    <from uri="sql:SELECT * FROM mytable" />
    <convertBodyTo type="java.lang.String" />
    <transform>
        <simple> ${in.body} </simple>
    </transform>
    <log message="${in.body}" />
    <to uri="amqp:queue:testingQueue" />
    <log message="${in.body}" />
</route>

Это приводит к бесконечному циклу. На верблюжьем маршруте продолжайте выбирать стол и отправлять в очередь. Я уже пытался использовать controlbus компонент, но с помощью шины управления вставляю только 2 данных в очередь. Как я могу сделать это в XML?

1 Ответ

0 голосов
/ 06 ноября 2019

Ваша цель - «Выбрать все данные в конкретной таблице postgre и отправить их в Amqp (только один раз)». В соответствии с текущей настройкой вам трудно контролировать поведение маршрута, когда вы помещаете компонент sql непосредственно из конечной точки.

Вместо того, чтобы помещать компонент sql непосредственно из конечной точки, вы должны найтиспособы убедиться, что маршрут срабатывает ровно один раз, а затем собирать записи БД из postgre. Для этого проще всего использовать компонент timer для однократного запуска маршрута и pollenrich для однократного вызова БД.

<from uri="timer://timerId?repeatCount=1" />
    <pollEnrich>
        <constant>sql:SELECT * FROM mytable</constant>
    </pollEnrich>

Ссылка: Компонент таймера верблюда , Верблюжий пыльцовый вариант

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...