Запросы дроссельной заслонки в верблюде не работают

Ниже приведены мои 3 маршрута в моем базовом классе маршрутов groovy, развернутом в качестве базовой структуры.

from("jms:queue:EndPoint1?concurrentConsumers=100")
                .routePolicyRef("myPolicy")
                .transacted()
                .log("Recieved From Endpoint1")
                /*.to("log:Recieved From Endpoint1?groupSize=100")*/
                .to("CommonEndpoint");

        from("jms:queue:EndPoint2?concurrentConsumers=50")
                .rootPolicyRef("myPolicy")
                /*.to("log:Recieved From Endpoint2?groupSize=100")*/
                .log("Recieved From Endpoint2")
                .to("CommonEndpoint");

        from("CommonEndpoint")
                .delay(50)
                /*.to("log:Delayed?groupSize=100")*/
                .log("Delayed");

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

from("timer://Timer1?fixedRate=true&period=60000")
                .to("jms:queue:EndPoint1");

а также

from("timer://Timer2?fixedRate=true&period=60000")
                .to("jms:queue:EndPoint2");

который непрерывно отправляет сообщение таймера в Endpoint1 и Enpoint2, которые оба отправляют сообщение в общую конечную точку. Моя ThrottlingInflightRoutePolicy определена, как показано ниже.

<bean id="myPolicy" class="org.apache.camel.impl.ThrottlingInflightRoutePolicy">
    <property name="scope" value="Context"/>
    <property name="maxInflightExchanges" value="20"/>
    <property name="resumePercentOfMax" value="10"/>
    <property name="loggingLevel" value="WARN"/>
</bean>

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


person Balaji Kannan    schedule 21.05.2015    source источник
comment
Не могли бы вы обновить версию Camel, которую вы используете?   -  person Ashoka    schedule 21.05.2015
comment
Во втором маршруте из --› jms:queue:EndPoint2 неправильно используется routePolicyRef --› rootPolicyRef   -  person Ashoka    schedule 21.05.2015
comment
Извините, это была орфографическая ошибка. Но это правильно в моем коде. Я попытался использовать routePolicy (политику), все сработало нормально. Но все еще не могу понять, почему routePolicyRef не работает...   -  person Balaji Kannan    schedule 21.05.2015
comment
@Ashok Nanda Camel версия: 2.14.1   -  person Balaji Kannan    schedule 25.05.2015


Ответы (1)


Я не уверен, как реализовать настроенную вами ThrottlingInflightPolicy, но вы можете реализовать такой маршрут, который должен достичь вашей цели.

from("jms:queue:EndPoint1?concurrentConsumers=20")
    .throttle(10)
    .to("Other_Logic_Or_Routing");

Примечания: maxInflightExchanges можно контролировать, просто уменьшив concurrentConsumers до 20. Компонент Throttle может гарантировать, что скорость обмена сообщениями не превысит лимит.

Существует множество способов настроить дроссель для вашего маршрута, поэтому, пожалуйста, посмотрите, что вы хотите настроить, в документации. В моем примере маршрут ограничивается обработкой 10 сообщений в секунду. http://camel.apache.org/throttler.html

person Matthew Fontana    schedule 28.05.2015