Есть много способов регистрировать и проверять сообщения, проходящие через вашего верблюда 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возможности.
В компоненте « Журнал» доступны дополнительные параметры, которые вы можете изучить. Попробуйте это с маршрутом и убедитесь сами.