【问题标题】:log4j JMSAppender and ActiveMQ as Camel endpointslog4j JMSAppender 和 ActiveMQ 作为 Camel 端点
【发布时间】:2012-02-23 11:59:01
【问题描述】:

我想通过 Apache Camel 将 log4j JMSAppender 连接到 ActiveMQ 队列,以便两者都是沿途的端点。此外,我想用 Java(不是 XML)完成所有配置。

log4j javadoc herethis SO question 都展示了如何建立这种连接的很好的例子sans Camel(通过 JNDI),但它们并不是我想要的。

我知道这可以通过activemq-camel Camel 组件实现,事实上,该组件的tutorial page 展示了如何设置到代理 URL 的池连接工厂。不幸的是(对我来说)都是 XML。

我正在努力:

  • 试图弄清楚如何将他们的 XML 示例(上面的链接)转换为 Java 代码;和
  • 如何将所有内容绑定在一起,以便JMSAppender 通过 Camel 将消息发布到正确的队列;这涉及端点创建和路由构建

这是我最好的尝试:

我需要一个init()-type 方法来设置我的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 LoggerAppender 就好了:

Logger logger = Logger.getLogger("foo.bar");
JMSAppender jmsAppender = configureJMSAppender();

logger.addAppender(jmsAppender);

...然后通过 Camel(而不是 JNDI/Java)将其所有日志消息放在 ActiveMQ log-queue 上。

提前感谢您的任何帮助!

【问题讨论】:

    标签: java log4j messaging activemq apache-camel


    【解决方案1】:

    camel-log 组件没有消费者...因此您无法连接路由以从日志中消费并发送到队列。

    一个选项是在 log4j.properties 中配置 JMSAppender,如本页所述...

    http://activemq.apache.org/how-do-i-use-log4j-jms-appender-with-activemq.html

    另外,vm:// 代表virtual machine transport...它允许您连接到在您的 VM 中运行的 ActiveMQ 代理...

    【讨论】:

    • 谢谢 Boday - 所以你说我不能让 Camel 成为我的 log4j JMSAppender 和 ActiveMQ 之间的“中间人” - 我只需要使用纯 log-to-AMQ连接?
    • 它只是一个选项,你不需要 Camel ......只是一个 AMQ 代理
    • 是的,log4j 可以将日志消息直接发送到 JMS 代理。你不需要Camel在中间。但是,如果您在使用 pax-logging 的 OSGi 容器中运行 Camel,则可以让 Camel 使用 pax-logging Camel 组件侦听日志:camel.apache.org/pax-logging.html
    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 2018-02-06
    • 2020-02-25
    • 2017-06-01
    • 1970-01-01
    • 2015-07-04
    • 2016-03-31
    • 1970-01-01
    相关资源
    最近更新 更多