Q&A
🌈常见问题列表
我们搜集了小伙伴们最关心的关于EasyRetry的一些问题,在这里我们进行答疑解惑,希望能帮助到您 如下您还有其他问题,您可以加入群聊,我们有专门的人员为您答疑解惑
SnailJob的分布式重试和SpringRetry的区别是什么?
这个问题我们在系统介绍中已经做出来解答SnailJob的分布式重试的核心优势
为什么日志显示上报成功,但是控制台没有发现任务呢?
最近接入的小伙伴都提出了这个问题,因为SnailJob为了防止上报大量重复数据而设计了,幂等机制
执行批次第一次看到不知道是啥意思?
批次: 是指一次任务执行调度产生的所有任务项的集合, 是调度的基本单位,包含多个任务项。 比如集群模式下,3个客户端集群,一次调度就会产生3个任务项,这个三个任务项就是一个批次.
什么是任务项?
任务项: 是批次中的单个执行单元, 每个任务项对应于一次客户端调度或操作, 同时任务项可以记录执行的详细信息,比如执行结果、执行状态等。
客户端注册不到服务端问题排查思路?
1、先检查配置的服务端 host、port、namespace、group、token是否都正确;
2、检查client、server的通信协议是否一致;
3、如果使用grpc协议通信,且server的grpc端口是nginx代理出来的,检查nginx配置是否按照grpc协议代理;
4、如果使用grpc协议通信,检查server和client的 protobuf 版本是否一致;
5、通过maven依赖检查工具,检查是否有其他依赖使用了
protobuf-java
,推荐使用IDEA自带的Analyze Dependencies
,如果出现非snail-job引入的protobuf-java
,即使版本号一样,也建议手工排除该依赖。
6、在lib分离打包方式中,如果某些依赖中包含protobuf-java,即使版本一样也可能会导致无法注册到服务端,且手工排除该依赖也无效,需要将
protobuf-java
相关的依赖和主程序打包到一起,参考以下方法:
新建一个maven模块,引入定时任务模块;
通过exclude打包时排除定时任务模块;
<profile>
<id>zip</id>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.example.snailjob.SnailJobSpringbootApplication</mainClass>
<layout>ZIP</layout>
<excludes>
<exclude>
<groupId>com.opensnail</groupId>
<artifactId>snailjob-demo</artifactId>
</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
打包后手动将定时任务模块打包的jar包放到lib目录下
在K8s环境下启动Pod出现 Failed to bind properties under 'snail-job' to int
容器环境默认
SNAIL_JOB_SERVER_PORT
读取为tcp://10.43.41.77:8080
,覆盖了application.yml
配置。解决办法:
spec:
containers:
- name: snail-job-server
env:
- name: TZ
value: "Asia/Shanghai"
- name: JAVA_OPTS
value: "-Djava.security.egd=file:/dev/./urandom -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC"
- name: SERVER_PORT
value: "8080"
- name: SNAIL_JOB_SERVER_PORT # 指定运行参数
value: "17888"
ports:
- containerPort: 8080 # 容器暴露的端口
- containerPort: 17888 # 另一个端口
command: ["java"]
args:
- "-Djava.security.egd=file:/dev/./urandom"
- "-XX:+HeapDumpOnOutOfMemoryError"
- "-XX:+UseZGC"
- "-jar"
- "app.jar"
- "--server.port=$(SERVER_PORT)"