Camel - Как остановить верблюжий маршрут, используя java dsl, при использовании компонента TIMER для объединения базы данных? - PullRequest
1 голос
/ 20 апреля 2020

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

from("timer://pollTheDatabase?delay=50s")
.routeId("db-pooling-route")
.to("mybatis:queryToSelectData?statementType=SelectOne")
    .choice()
        .when().simple("${in.header.CamelMyBatisResult} == ''").stop()
        .otherwise().to("direct:processing-data")
        .end()
    .end()
.end();

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

stop() означает прекращение маршрутизации текущего сообщения, а не самого маршрута. Для остановки / запуска маршрутов и т. Д. c вы можете использовать компонент controlbus.

https://camel.apache.org/components/latest/controlbus-component.html

А поскольку вы хотите остановить маршрут от самого себя, то установите параметр async=true в конечной точке шины управления.

0 голосов
/ 28 апреля 2020

Я пытался использовать контрольную шину, и она работала.

from("timer://pollTheDatabase?delay=50s&synchronous=false")
.routeId("db-pooling-route")
.to("mybatis:queryToSelectData?statementType=SelectOne")
    .choice()
        .when().simple("${in.header.CamelMyBatisResult} == ''")
        .to("controlbus:route?async=true&routeId=db-pooling-route&action=stop")
.end()
.to("direct:processing-data");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...