Есть много способов регистрировать и проверять сообщения, проходящие через вашего верблюда Route
. camel-core
Поставляется с log
компонентом , который позволит вам проверить сообщение. Таким образом, вместо того, чтобы писать отдельное, Processor
чтобы просто записать строку как обработанную, попробуйте использовать это:
from("timer://timer1?period=1s") .to("log:demo")
По умолчанию log
компонент будет записывать содержимое вашего сообщения через имя вашего регистратора, demo
в вышеупомянутом случае, на уровне INFO. Поскольку вы можете дать любое имя, вы можете контролировать УРОВЕНЬ ведения журнала в любом случае с помощью реализации регистратора Camel SLF4J .
Чтобы записать сообщение на уровне DEBUG, попробуйте это
from("timer://timer1?period=1s") .to("log:demo?level=DEBUG")
Теперь, если вы используете log4j
реализацию логгера, убедитесь, что добавили конфигурацию логгера следующим образом.
log4j.logger.demo = DEBUG log4j.logger.org.apache.camel = INFO
Сообщение Camel также может иметь свойства и заголовки, поэтому для их отображения вы можете добавить showAll=true
.
Когда вы обрабатываете сообщения, которые имеют большой основной текст, может быть более практичным просто отобразить определенное количество символов. Для этого добавьте maxChars=256
в URL.
Как измерить пропускную способность сообщений Camel
Одна из скрытых жемчужин компонента log
— его способность регистрировать пропускную способность сообщений! Вы можете указать определенную группу сообщений, которые будут регистрироваться, и как только она достигнет этого значения, она напечатает вывод скорости сообщения в секунду. Чтобы включить это, просто добавьте groupSize
опцию к URL.
Чтобы продемонстрировать это, я создам SampleGenerator
процессор EJB, который будет заполнять Route
примеры сообщений. Я буду использовать реестр контекста Camel для привязки bean-компонента и ссылки на него в Route
. Вот демонстрационный код.
package camelcoredemo; import org.slf4j.*; import org.apache.camel.*; import org.apache.camel.builder.*; import org.apache.camel.main.Main; public class LogDemoCamel extends Main { static Logger LOG = LoggerFactory.getLogger(LogDemoCamel.class); public static void main(String[] args) throws Exception { LogDemoCamel main = new LogDemoCamel(); main.enableHangupSupport(); main.addRouteBuilder(createRouteBuilder()); main.bind("sampleGenerator", new SampleGenerator()); main.run(args); } static RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { from("bean:sampleGenerator") .to("log://demo?groupSize=100"); } }; } static class SampleGenerator implements Processor{ int count = 0; public void process(Exchange msg) throws Exception { if (count >= 500){ LOG.info("Max count has reached. Do nothing."); Thread.sleep(Long.MAX_VALUE); return; } // Let's generate sample message. count++; LOG.trace("Generating sample msg #{}", count); msg.getOut().setBody("Sample msg"); } } }
Теперь вы можете скомпилировать и запустить эту демонстрацию.
mvn compile exec:java -Dexec.mainClass=camelcoredemo.LogDemoCamel
Запустив эту демонстрацию, вы заметите, что скорость будет отображаться на консоли и как быстро вы можете качать сообщение Route
и обрабатывать его. Это очень полезная функция, которая поможет вам измерить и быстро оценить ваши Route
возможности.
В компоненте « Журнал» доступны дополнительные параметры, которые вы можете изучить. Попробуйте это с маршрутом и убедитесь сами.