Apache Camel RouteBuilder настроить метод - PullRequest
0 голосов
/ 08 июня 2018

У меня есть какая-то существующая программа веб-приложений, разработанная Pass Pass, и теперь я поддерживаю и изучаю ее.Я пытался прочитать много статей из Интернета о Apache Camel, но все еще не могу понять, в чем дело.

Позвольте мне показать некоторый код класса, который расширяет RouteBuilder:

Это от FserviceRouteBuilderкласс:

@Override
public void configure() throws Exception {
    log.debug( "FServiceRouteBuilder configure" );
    errorHandler( deadLetterChannel( ).maximumRedeliveries( 0 ) );

    from( this.from ).process( requestProcessor ).process(
            transformProcessor );

    log.debug( "FServiceRouteBuilder configure end" );

}

И это из MyBillRouteBuilder:

@Override
public void configure() throws Exception {

    log.debug( ">>MybillRouteBuilder configure" );
    errorHandler( deadLetterChannel( ).maximumRedeliveries( 0 ) );

    from( this.from ).process( requestProcessor ).to(
            "direct:_mybill-process-response" );

    if ( transformProcessor != null ) {
        from( "direct:_mybill-process-response" ).process(
                transformProcessor );
    }

    log.debug( ">>MybillRouteBuilder configure end" );

}

То, что я видел по-разному, MyBillRouteBuilder использует метод to(), который to( "direct:_myebill-process-response" ), но FServiceRouteBuilder так не поступило.

Но оба они работают.Я попытался изменить FServiceRouteBuilder для использования метода to() и его работы.

Оба они также вызывают и обрабатывают определенный веб-сервис с помощью метода SOAP.

Могу ли я узнать, что на самом деле делает to()?И чем отличается использование и без него?

Извините, я очень новичок в этом.

1 Ответ

0 голосов
/ 08 июня 2018

Основное отличие состоит в том, что в FServiceRouteBuilder все шаги в вашем маршруте выполняются в одном потоке.

from( this.from ).process( requestProcessor ).process(
        transformProcessor );

Оба процессора (requestProcessor, transformProcessor) работают в одном потоке.Вы можете подтвердить это, просто зарегистрировав оператор в обоих процессорах, например Thread.currentThread().getId().

Принимая во внимание, что с MyBillRoutebuilder ваш второй процессор (transformProcessor) отделен от первого (используя to) и работает в отдельном потоке.

from( this.from ).process( requestProcessor ).to(
            "direct:_mybill-process-response" );

if ( transformProcessor != null ) {
    from( "direct:_mybill-process-response" ).process(
                transformProcessor );
}
...