Apache Camel: добавить компонент в реестр для индивидуальной стратегии опроса

Мне нужно реализовать кастом PollingConsumerPollStrategy реализация на маршруте внутри RouteBuilder, Примеры, которые я нашел, используют Spring для создания bean-компонента, но я не использую Spring в своем проекте.

Как мне добавить MyPollStrategy в реестр и использовать его как pollStrategy=#myPoll?

public class MyFtpServiceBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {

        // Want to add to below route &pollStrategy=#myPoll

        from("sftp://tmpserver.example.com:22//tmp/testfolder?password=xxxxxx&username=tmpuser")
            .routeId("testRoute")
            .to("file:C:/tmp/testfolder")

    }

    private class MyPollStrategy implements PollingConsumerPollStrategy {
        public boolean begin(Consumer consumer, Endpoint endpoint) {
            return true;
        }
        public void commit(Consumer consumer, Endpoint endpoint, int polledMessages) {
            if (polledMessages > maxPolls) {
                maxPolls = polledMessages;
            }
            latch.countDown();
        }
        public boolean rollback(Consumer consumer, Endpoint endpoint, int retryCounter, Exception cause) throws Exception {
            return false;
        }
    }
}

2 ответа

Решение

Как я использовал org.apache.camel.main.MainЯ не мог найти способ создать SimpleRegistry, как упомянул Клаус, и передать его основному объекту.

Только что узнал, что есть метод bind в Main класс для передачи имени бина и объекта бина.

Main main = new Main();
main.addRouteBuilder(new MyTestRouteBuilder());
main.enableHangupSupport();
main.bind("myPoll", new MyPollStrategy());
main.run();

Вы можете создать экземпляр SimpleRegistry где вы можете добавить свой пользовательский компонент. А затем передать простой экземпляр реестра, где вы создаете CamelContext с new DefaultCamelContext(myRegistry) конструктор.

Если у вас есть книга "Верблюд в действии", см. Главу "Бобы", в которой все это объясняется подробнее.

На веб-сайте есть немного деталей по адресу: http://camel.apache.org/registry.html

Другие вопросы по тегам