它想要干什么?
- 导入一个工程
如果您希望用maven管理您的项目,可以使用
app-main-mvn
项目导入;
如果您希望用gradle管理您的项目,可以使用app-main
项目导入;
如果想了解详细信息请移步项目README;
- 如果您想依赖在docker容器中执行
## 前台执行
docker run --rm -it -v /home/docker/app-main/libs:/home/user0 openjdk:17.0.2-jdk-oraclelinux8\
-w /home/user0 java -Dlog.level=INFO -Dlog.file=/home/user0/app.log -jar app-main.jar
## 守护进程执行
docker run -d -v /home/docker/app-main/libs:/home/user0 -w /home/user0 openjdk:17.0.2-jdk-oraclelinux8\
java -Dlog.level=INFO -Dlog.file=/home/user0/app.log -jar app-main.jar
top.zeimao77.product.main.BaseMain
类提供了日志及配置环境,您只需要让主函数类继承它就可以使用它了;
BaseMain
提供了log4j2的日志支持,您可以使用环境变量或者命令行参数来简单配置它;
log.level
: 日志级别,缺省为DEBUG
;log.file
: 指定日志文件路径以开启文件日志功能;log.rolling
: TRUE:开启滚动日志,缺省为FALSE
;log.stdout.enable
: FALSE 关闭终端log日志输出 缺少为TRUE;log.rolloverStrategyMax
: 最多保留几个历史日志,缺省值10
;
当然它仅仅是一个默认的实现,其优先值为3,如果您觉得它很烂完全可以自己通过log4j2.xml
等文件重新配置,配置文件有较高的优先级;
BaseMain
提供了默认的环境配置,您只需要在classpath或者用户目录下放置一个localcontext.properties
文件即可;
如果在程序中显式读取配置,调用LocalContext.get***()
方法就可以;
如果您需要在执行时指定该配置,您也可以通过环境变量或者命令行参数来指定它;
local.context.file
支持您通过一个路径来指定一个配置文件;local.context.active
如果有多个环境需要区分,可以提前将配置放置到classpath下,然后通过参数指定它;例如:-Dlocal.context.active=dev
将加载localcontext-dev.properties
配置文件;
配置的主要作用还是通过ComponentFactory
类来初始化配置常用组件,使用它可以简化代码;
- 多线程消费处理任务模板示例
- 如果在消费任务时需要控制处理的频率,我们也提供了令牌桶(
TokenBucket
);
IConverter
提供了键值对转换功能,其有4个抽象的实现对应了4种不同的刷新机制;
-
AbstractNonReFreshConverter
: 没有刷新机制的转换器,仅在第一次使用调用刷新; -
AbstractIntervalRefreshConverter
: 固定间隔(秒)刷新,刷新规则时如果过期将加上间隔时间设置为过期时间; -
AbstractIntervalDayRefreshConverter
: 每天刷新,以临界点为限,临界点后的第一次使用时刷新; -
AbstractCustomRefreshConverter
: 通过setExpiryTime(expiryTime)
自定义过期时间,最为灵活;