refactor: 优化配置

This commit is contained in:
zhouhao 2025-07-08 09:25:19 +08:00
parent 5497beff58
commit 705929a713
9 changed files with 86 additions and 89 deletions

View File

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="JetLinksApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
<option name="ACTIVE_PROFILES" value="dev,local" />
<option name="ACTIVE_PROFILES" value="default,dev,local" />
<module name="jetlinks-standalone" />
<option name="SPRING_BOOT_MAIN_CLASS" value="org.jetlinks.community.standalone.JetLinksApplication" />
<option name="VM_PARAMETERS" value="--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.base/java.math=ALL-UNNAMED --add-opens java.scripting/javax.script=ALL-UNNAMED --add-opens java.base/java.time=ALL-UNNAMED -XX:+EnableDynamicAgentLoading" />

View File

@ -399,6 +399,7 @@ public class PersistenceBuffer<T extends Serializable> implements EvictionContex
return Mono
.fromRunnable(() -> data.forEach(this::write))
.subscribeOn(writer)
.publishOn(Schedulers.parallel())
.then();
}

View File

@ -77,9 +77,8 @@ public class SchemalessTDEngineDataWriter implements TDEngineDataWriter, Disposa
if (buffer == null) {
return writeNow(Flux.just(convertToLine(point)));
}
buffer.write(convertToLine(point));
return Mono.empty();
return buffer.writeAsync(convertToLine(point));
}
@Override

View File

@ -61,7 +61,7 @@ public class DefaultThingsDataRepository implements ThingsDataRepository, Things
private ThingsDataRepositoryStrategy getPolicyNow(String policy) {
ThingsDataRepositoryStrategy dataPolicy = policies.get(policy);
if (dataPolicy == null) {
throw new I18nSupportException("error.thing_data_policy_unsupported", policy);
throw new I18nSupportException.NoStackTrace("error.thing_data_policy_unsupported", policy);
}
return dataPolicy;
}

View File

@ -269,7 +269,7 @@ public class DatabaseDeviceLatestDataService implements DeviceLatestDataService,
prob.put("deviceName", deviceName);
Buffer buffer = Buffer.of(tableName, message.getDeviceId(), deviceName, prob, message.getTimestamp());
writer.write(buffer);
return writer.writeAsync(buffer);
} catch (Exception e) {
log.error(e.getMessage(), e);
}

View File

@ -0,0 +1,24 @@
# 注意!!!,本地开发时,请创建application-local.yml文件进行配置,不要随意修改application-default.yml文件并提交到git.
# 数据库相关配置
DB_HOST: 127.0.0.1 # postgresql 数据库地址
DB_PORT: 5432 # postgresql 数据库端口
DB_DATABASE: jetlinks # postgresql 数据库名
DB_USERNAME: postgres # postgresql 数据库用户名
DB_PASSWORD: jetlinks # postgresql 数据库密码
DB_SCHEMA: public # postgresql 数据库schema,默认public
DB_DIALECT: postgres # 数据库方言,默认postgres. 支持postgres,mysql,oracle,sqlserver等.
# redis 相关配置
REDIS_HOST: 127.0.0.1
REDIS_PORT: 6379 # redis 数据库地址
REDIS_PASSWORD: "" # redis 密码
REDIS_DATABASE: 0 # redis 数据库索引
# timescalbedb相关配置
TIMESCALEDB_SCHEMA: public # timescaledb 数据库schema,默认public
# elasticsearch相关配置
ES_URIS: 127.0.0.1:9200
ES_USERNAME: "" # elasticsearch 用户名
ES_PASSWORD: "" # elasticsearch 密码

View File

@ -3,7 +3,7 @@ server:
spring:
profiles:
active: dev
active: default,dev,local
application:
name: jetlinks-platform
jackson:
@ -19,23 +19,21 @@ spring:
static-locations: file:./static/,/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/, classpath:/public/
data:
redis:
host: 127.0.0.1
port: 6379
lettuce:
pool:
max-active: 1024
host: ${REDIS_HOST:127.0.0.1}
port: ${REDIS_PORT}
timeout: 20s
# database: 3
# max-wait: 10s
database: ${REDIS_DATABASE}
password: ${REDIS_PASSWORD:""}
r2dbc:
# 需要手动创建数据库,启动会自动创建表,修改了配置easyorm相关配置也要修改
url: r2dbc:postgresql://127.0.0.1:5432/jetlinks
url: r2dbc:postgresql://${DB_HOST:127.0.0.1}:${DB_PORT:5432}/${DB_DATABASE:jetlinks}
# 如果需要切换为mysql,请同时禁用timescaledb.enabled=false或者单独配置timescaledb.r2dbc.url
# 并且需要使用elasticsearch,请勾选es7x profile或者手动引入es依赖,具体在pom.xml搜索es7x.并配置elasticsearch相关配置
# 如果需要使用elasticsearch,请勾选es7x profile或者手动引入es依赖,具体在pom.xml搜索es7x.并配置elasticsearch相关配置
# 数据库说明: https://hanta.yuque.com/px7kg1/dev/tw77qae6b08bcdfh
# url: r2dbc:mysql://127.0.0.1:3306/jetlinks?ssl=false&serverZoneId=Asia/Shanghai # 修改了配置easyorm相关配置也要修改
username: postgres
password: jetlinks
# 注意:切换了数据库easyorm相关配置也要修改
# url: r2dbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_DATABASE}?ssl=false&serverZoneId=Asia/Shanghai
username: ${DB_USERNAME:postgres}
password: ${DB_PASSWORD:jetlinks}
pool:
max-size: 128
max-idle-time: 2m # 值不能大于mysql server的wait_timeout配置
@ -46,14 +44,14 @@ spring:
enabled: false
# 引入elasticsearch相关模块后使用elasticsearch来存储设备、时序、日志等数据
elasticsearch:
uris: 127.0.0.1:9200
uris: ${ES_URIS:127.0.0.1:9200}
socket-timeout: 10s
connection-timeout: 15s
# password:
# username:
password: ${ES_USERNAME:""}
username: ${ES_PASSWORD:""}
easyorm:
default-schema: public # 数据库默认的schema
dialect: postgres #数据库方言
default-schema: ${DB_SCHEMA:public} # 数据库默认的schema,mysql时则为数据库名.(注意大小写,请勿使用-等特殊字符)
dialect: ${DB_DIALECT:postgres} #数据库方言
timescaledb:
# 默认使用timescaledb来存储设备数据,如果使用mysql,需要设置为false或配置shared-spring为false以及r2dbc相关配置.
enabled: true
@ -62,7 +60,7 @@ timescaledb:
# url: r2dbc:postgresql://localhost:15432/jetlinks
# username: postgres
# password: p@ssw0rd
schema: ${easyorm.default-schema}
schema: ${TIMESCALEDB_SCHEMA:${easyorm.default-schema}} # timescaledb的schema,默认public
time-series:
enabled: true
retention-policies:
@ -190,7 +188,19 @@ logging:
"org.jetlinks.community.timescaledb.impl.DefaultTimescaleDBDataWriter": warn
"io.scalecube": warn
"org.jetlinks.community.things.data": warn
config: classpath:logback-spring.xml
"org.hswebframework.web.starter.i18n": warn
logback:
rollingpolicy:
max-file-size: 100MB
max-history: 7
total-size-cap: 10GB
file:
name: ./data/logs/${spring.application.name}_${server.port}.log
path: ./data/logs
threshold:
file: INFO # 文件只记录INFO以上的日志
console: TRACE
event: WARN # 只记录WARN以上的日志到系统日志中
vertx:
max-event-loop-execute-time-unit: seconds
max-event-loop-execute-time: 30

View File

@ -1,9 +1,7 @@
_ _ _ _ _
| | | | | | (_) | |
| | ___| |_| | _ _ __ | | _____
_ | |/ _ \ __| | | | '_ \| |/ / __|
| |__| | __/ |_| |____| | | | | <\__ \
\____/ \___|\__|______|_|_| |_|_|\_\___/
jetlinks @project.version@ build @maven.build.timestamp@
spring-boot ${spring-boot.version}
http port ${server.port}
██╗███████╗████████╗ ██╗ ██╗███╗ ██╗██╗ ██╗███████╗
██║██╔════╝╚══██╔══╝ ██║ ██║████╗ ██║██║ ██╔╝██╔════╝
██║█████╗ ██║ ██║ ██║██╔██╗ ██║█████╔╝ ███████╗
██ ██║██╔══╝ ██║ ██║ ██║██║╚██╗██║██╔═██╗ ╚════██║
╚█████╔╝███████╗ ██║ ███████╗██║██║ ╚████║██║ ██╗███████║
╚════╝ ╚══════╝ ╚═╝ ╚══════╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝
:: JetLinks IoT Platform :: ${spring.application.name}:@project.version@

View File

@ -1,42 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
<statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
<conversionRule conversionWord="shortened"
class="org.jetlinks.community.logging.logback.ShortenedThrowableConverter"/>
<!-- 过滤掉不重要的栈信息 -->
<conversionRule conversionWord="shortened" class="org.jetlinks.community.logging.logback.ShortenedThrowableConverter"/>
<property name="LOG_EXCEPTION_CONVERSION_WORD" value="%shortened"/>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="./data/logs/jetlinks-community.log"/>
<springProperty scope="context" name="LOG_EVENT_THRESHOLD" source="logging.threshold.event" defaultValue="WARN" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<appender name="LOGEventPublisher" class="org.jetlinks.community.logging.logback.SystemLoggingAppender"/>
<logger name="org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker" level="ERROR" />
<appender name="ErrorLOGEventPublisher" class="org.jetlinks.community.logging.logback.SystemLoggingAppender">
<!-- 记录到 系统日志 功能中 可通过配置 logging.threshold.event=WARN 来指定记录的日志级别 -->
<appender name="LOGEventPublisher" class="org.jetlinks.community.logging.logback.SystemLoggingAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
<level>${LOG_EVENT_THRESHOLD}</level>
</filter>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
<charset>${FILE_LOG_CHARSET}</charset>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
<cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
<maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
<totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
<maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}</maxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
</appender>
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml"/>
<logger name="org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker" level="ERROR"/>
<logger name="org.jetlinks.pro.timescaledb.impl.DefaultTimescaleDBDataWriter" level="WARN"/>
<!--控制台使用异步打印,防止阻塞-->
<appender name="AsyncConsoleAppender" class="ch.qos.logback.classic.AsyncAppender">
@ -54,31 +40,10 @@
<appender-ref ref="CONSOLE"/>
</appender>
<springProfile name="dev">
<logger name="system" level="debug">
<appender-ref ref="LOGEventPublisher"/>
</logger>
<root level="INFO">
<appender-ref ref="AsyncConsoleAppender"/>
<appender-ref ref="ErrorLOGEventPublisher"/>
</root>
</springProfile>
<springProfile name="test">
<root level="INFO">
<appender-ref ref="AsyncConsoleAppender"/>
<appender-ref ref="FILE"/>
</root>
</springProfile>
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="AsyncConsoleAppender"/>
<appender-ref ref="LOGEventPublisher"/>
<appender-ref ref="FILE"/>
</root>
</springProfile>
<root level="INFO">
<appender-ref ref="AsyncConsoleAppender"/>
<appender-ref ref="FILE"/>
<appender-ref ref="LOGEventPublisher"/>
</root>
</configuration>