Я хочу подключить log4j JMSAppender
к очереди ActiveMQ через Apache Camel, чтобы обе были конечными точками на маршруте. Кроме того, я хотел бы, чтобы вся конфигурация была выполнена на Java (а не в XML).
Документ log4j javadoc здесь и < href="https://stackoverflow.com/questions/2097754/using-the-log4j-jmsappender-with-activemq">этот вопрос SO показывает отличные примеры того, как настроить такое соединение sans Camel (через JNDI), но это не совсем то, что мне нужно.
Я знаю, что это возможно с помощью компонента activemq-camel
Camel, и на самом деле учебная страница этого компонента показывает, как для настройки объединенной фабрики соединений с URL-адресом брокера. К сожалению (для меня) все в XML.
Я борюсь с:
- Попытка выяснить, как превратить их примеры XML (ссылка выше) в код Java; и
- Как связать все воедино, чтобы
JMSAppender
публиковал сообщения через Camel в правильную очередь; это включает в себя создание конечной точки и построение маршрута
Вот моя лучшая попытка:
Где-то мне понадобится метод типа init()
для настройки моего CamelContext
:
CamelContext context = new DefaultCamelContext();
context.addComponent("log4j-jms-appender", new LogComponent()); // ????
context.addComponent("activemq",
activeMQComponent("vm://localhost?broker.persistent=false")); // ???
context.addRoutes(new RouteBuilder() {
public void configure() {
from("log4j-jms-appender").to("activemq:queue:log-queue");
}
});
Теперь с этим кодом уже есть несколько проблем - и, возможно, я даже пошел по неправильному пути. Как видите, я изо всех сил пытаюсь правильно добавить компоненты конечной точки. Я также совершенно не уверен, что такое протокол строки «vm://
» или что он означает. Все другие примеры кода, которые я вижу, включают ActiveMQ, использующий протокол tcp
.
Если сложить вместе, то просто неплохо было бы написать log4j Logger
и Appender
вот так:
Logger logger = Logger.getLogger("foo.bar");
JMSAppender jmsAppender = configureJMSAppender();
logger.addAppender(jmsAppender);
... а затем разместить все свои сообщения журнала в ActiveMQ log-queue
через Camel (а не JNDI/Java).
Заранее спасибо за любую помощь!