【发布时间】:2021-08-05 00:15:54
【问题描述】:
我无法获得一个简单的 hello-world 类型的 Spring Boot 应用程序来利用 Pulsar Log4j2 appender。启动时报错:
2021-05-14T15:34:23.549-05:00 [pulsar-client-io-6-1] 错误 oapciProducerImpl [applog-json] [pulsar-log4j2-appender-applog-json] 无法创建生产者:名称为“pulsar-log4j2-appender-applog-json”的生产者已连接到主题 2021-05-14 15:34:23,550 主要错误无法启动脉冲星管理器 org.apache.pulsar.client.api.PulsarClientException$ProducerBusyException:名为“pulsar-log4j2-appender-applog-json”的生产者已连接到主题 在 org.apache.pulsar.client.api.PulsarClientException.unwrap(PulsarClientException.java:884) 在 org.apache.pulsar.client.impl.ProducerBuilderImpl.create(ProducerBuilderImpl.java:93) 在 org.apache.pulsar.log4j2.appender.PulsarManager.startup(PulsarManager.java:127) 在 org.apache.pulsar.log4j2.appender.PulsarAppender.start(PulsarAppender.java:187) ...
我正在使用 Apache Pulsar 2.7.1 和 pulsar-log4j2-appender:2.6.3(我尝试了其他版本的 appender,结果相同)。这与错误可能暗示的运行多个实例无关。在启动应用程序之前,我什至可以通过“pulsar-admin topics stats”验证当前没有连接到该主题的发布者。我使用 Pulsar Log4j2 appender 启动了一个 Spring Boot 应用程序实例,它会记录该错误并且不会向 Pulsar 发送数据。如果错误消息确实有效,则附加程序必须以某种方式在内部创建多个连接。 有没有其他人遇到过这个并想出一个解决方案? 这似乎是一件相当简单的尝试和做的事情,不应该如此复杂或挑剔。
我将示例项目发布到 GitHub 以方便其他人对其进行测试。
git clone https://github.com/kelbyloden/pulsarLog4jTest.git
cd pulsarLog4jTest/
./gradlew clean build
./gradlew bootRun -Dapp.name=pulsarLog4jTest -Dlog.level=INFO -Dpulsar.host=localhost
编辑 pulsar.host 变量以反映 Pulsar 实例的主机名。这假定它位于 http://localhost:6650。这在 log4j2.xml 文件中被引用。
当我执行此操作时,我得到了提到的错误。
注意我创建了另一个不使用 Spring Boot 的示例 Java 项目,它工作正常。它似乎与 Spring 依赖项有关。
【问题讨论】:
标签: log4j2 appender apache-pulsar pulsar