[英]log4j JMSAppender and ActiveMQ as Camel endpoints
我想将log4j JMSAppender
连接到Apache Camel上的ActiveMQ队列,以便它们都是沿着路由的端点。 此外,我想用Java(不是XML)完成所有配置。
这里的log4j javadoc和这个SO问题都显示了如何在没有 Camel的情况下(通过JNDI)建立这样的连接的好例子,但是它们并不是我想要的。
我知道通过activemq-camel
Camel组件可以做到这一点,实际上,该组件的教程页面显示了如何将池连接工厂设置为代理URL。 不幸的是(对我而言)全部使用XML。
我正在努力:
JMSAppender
通过Camel将消息发布到正确的队列; 这涉及端点创建和路由构建 在某个地方,我将需要一个init()
- CamelContext
方法来设置我的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://
”协议是什么或它代表什么。 我看到的所有其他其他代码示例都涉及使用tcp
协议的ActiveMQ。
综上所述,编写这样的log4j Logger
和Appender
会很好:
Logger logger = Logger.getLogger("foo.bar");
JMSAppender jmsAppender = configureJMSAppender();
logger.addAppender(jmsAppender);
...然后通过Camel(而不是JNDI / Java)将其所有日志消息放置在ActiveMQ log-queue
上。
在此先感谢您提供的所有帮助!
camel-log组件没有使用方...因此您无法连接一条从日志中使用并发送到队列的路由。
一种选择是在log4j.properties中配置JMSAppender,如本页所描述...
http://activemq.apache.org/how-do-i-use-log4j-jms-appender-with-activemq.html
此外,vm://代表虚拟机传输 ...它允许您连接到在VM中运行的ActiveMQ代理...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.