конвертируйте Apache camel config в spring java config

мы находимся в процессе преобразования текущего проекта spring в spring boot и в то же время преобразования всех Spring beans из xml в Java config на основе.

я застрял, Преобразуя конфигурацию Camel xml в конфигурацию на основе java.

в настоящее время мы указаны camel config, маршруты и конечные точки, один пример, как показано ниже

    <camel:camelContext id="camelClient">
        <camel:template id="camelTemplate"/>
    </camel:camelContext>


        <template id="camelTemplate"/>

вот несколько конечных точек

        <endpoint id="archiveUserQueue"
                  uri="swiftmq:${hk.jms.archive.queue.name}?concurrentConsumers=${hk.jms.archive.queue.consumers}"/>

        <endpoint id="directSmsNotification" uri="direct:sendSMS"/>

один из определенных маршрутов

        <route>
            <from ref="directSmsNotification"/>
            <to uri="bean:messengerService?method=sendSmsMessage"/>
        </route>

в коде java мы получаем доступ к конечной точке, как показано ниже

smsEndpoint = _camelContext.getEndpoint("directSmsNotification");

как мы можем преобразовать конфигурацию camel из xml в конфигурацию на основе java.

я следовал инструкциям, указанным на http://camel.apache.org/spring-java-config.html но это было слишком трудно понять, так как я не знаком с Camel.

1 ответ

  1. Вы можете смешивать и сопоставлять Spring Java config с Apache Camel XML config. Я спрашиваю, почему вы делаете это преобразование в первую очередь.

    Тем не менее, если вы посмотрите на Camel docs, вы увидите пример работы с RouteBuilder .

    Вы также можете посмотреть пример приложения spring-boot . Вот модифицированный RouteBuilder из этого примера:

    @Component
    public class MySpringBootRouter extends RouteBuilder {
    
        @Override
        public void configure() {
    
            Context context = getContext();
            MyEndpoint ep = context.getEndpoint("someURI", MyEndpoint.class);
    
            from(ep)
                .transform().simple("ref:myBean")
                .to("log:out");
        }
    }
    

    Update: я изменил фрагмент, чтобы показать получение конечной точки напрямую. Дополнительную информацию можно получить в документах Camel. Я не уверен, насколько распространен этот подход. В прошлом, когда я регулярно использовал Camel, конечные точки были настроены декларативно через их значения URI. Я не думаю, что я когда-либо явно определил конечную точку в моем коде Camel XML или Java. Я уверен, что для этого есть варианты использования, но для вас может быть проще настроить только URI.