前言 不正确的日志打印不但会降低程序运行性能,还会占用大量IO资源和硬盘存储空间。 本文主要总结一些能提高日志打印性能的手段。 一、通过AsyncAppender异步输出日志 我们通常使用的ConsoleAppender 和 RollingFileAppender都是同步输出日志,会阻塞程序运行。只有当日志打印完毕程序才会继续执行。 而通过AsyncAppender实现异步日志输出,会启用单独日志线程去记录日志,并且不会阻塞程序运行,可以极大的增加日志打印的吞吐量。 具体实现可以查看:logback异步输出日志详解 配置示例: 添加一个基于异步写日志的 appender,并指向原先配置的 appender即可。 <configuration> <!-- 同步输出 --> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>myapp.log</file> <encoder> <pattern>%logger{35} .... logback性能优化详解 java
什么是 MQTT 主题? MQTT 主题本质上是一个 UTF-8 编码的字符串,是 MQTT 协议进行消息路由的基础。MQTT 主题类似 URL 路径,使用斜杠 / 进行分层: chat/room/1 sensor/10/temperature sensor/+/temperature sensor/# 为了避免歧义且易于理解,通常不建议主题以 / 开头或结尾,例如 /chat 或 chat/。 不同于消息队列中的主题(比如 Kafka 和 Pulsar),MQTT 主题不需要提前创建。MQTT 客户端在订阅或发布时即创建了主题,并且也不需要手动删除主题。 下图是一个简单的 MQTT 订阅与发布流程, APP 1 订阅了sensor/2/temperature 主题后,将能接收到 Sensor 2 发布到该主题的消息。 MQTT 主题通配符 MQTT 主题通配符包含单层通配符 + 及多层通配符 #,主要用于客户端一次订阅多个主题。 注意 :通配符只能用于订阅,不能用于发布。 单层通配符 加号 (“+” U+002B) 是用于单个主题层级匹配的通配符。在使用单层通配符时,单层通配.... 通过案例理解 MQTT 主题与通配符 mqtt