小编Lyn*_*777的帖子

Log4j2 AsyncLogger,滚动文件appender没有显示文件行号

我使用log4j2与以下依赖项:

<!-- LOG4J2 -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.0-rc1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.0-rc1</version>
    </dependency>
    <dependency>
        <groupId>com.lmax</groupId>
        <artifactId>disruptor</artifactId>
        <version>3.0.1</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

Log4j2.xml内容:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">

<Appenders>
    <Console name="CONSOLE" target="SYSTEM_OUT">
        <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
    </Console>

    <!-- Generate rolling log for router with per hour interval policy -->
    <RollingFile name="ProcessorRollingFile" fileName="D:/ocsprocessor.log"
        filePattern="D:/ocsprocessor.log.%d{MM-dd-yyyy}-%i.log">
         <PatternLayout>
      <pattern>%d{ISO8601} [%t] %p %c %L - %m%n</pattern>
  </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" />
        </Policies>
        <DefaultRolloverStrategy max="24" />
    </RollingFile>



    <!-- Register Async appender -->
    <Async name="AsyncRollingFile"> …
Run Code Online (Sandbox Code Playgroud)

java logging log4j log4j2

8
推荐指数
1
解决办法
9900
查看次数

Springboot JMS Listener ActiveMQ很慢

我有一个 SpringBoot 应用程序,它使用来自 ActiveMQ 队列的自定义可序列化消息。到目前为止,它是有效的,但是消耗率很差,只有1 - 20 msg/sec。

@JmsListener(destination = "${channel.consumer.destination}", concurrency="${channel.consumer.maxConcurrency}")
public void receive(IMessage message) {
    processor.process(message);
}
Run Code Online (Sandbox Code Playgroud)

上面是我的通道消费者类的片段,它有一个处理器实例(注入,自动装配,并且在其中我有 @Async 服务,所以我可以假设一旦消息进入 @Async 方法,主线程就会被释放)并且它还使用springboot activemq 默认 conn 工厂,我从应用程序属性设置

# ACTIVEMQ (ActiveMQProperties)
spring.activemq.broker-url= tcp://localhost:61616?keepAlive=true
spring.activemq.in-memory=true
spring.activemq.pool.enabled=true
spring.activemq.pool.expiry-timeout=1
spring.activemq.pool.idle-timeout=30000
spring.activemq.pool.max-connections=50
Run Code Online (Sandbox Code Playgroud)

有几件事值得一提:
1. 我在本地笔记本电脑上运行所有内容(Eclipse、ActiveMQ、MYSQL)
2. 在此之前,我还尝试使用配备自定义线程池任务执行器的自定义连接工厂(默认 AMQ、池化和缓存),但仍然得到相同的结果。下面是我拍摄的性能快照,每 1 秒更新一次
3。我还在 JVM 监视器中注意到已用堆不断增加

我的 JVM 监视器实例

性能计数器快照


我想知道:
1. 我的步骤是否有问题/遗漏?我的消息速率甚至无法触及数百个
2. 带注释的 @JmsListener 方法将执行异步或同步进程?
3. 如果可能并且支持,如何正确且优雅地使用传统的sync receive()与SpringBoot?

谢谢

spring activemq-classic jms spring-jms spring-boot

5
推荐指数
1
解决办法
4338
查看次数