Skip to content

客户端

Snail Job 客户端支持JDK8、JDK17、Solon。

一、maven依赖

Spring配置

bash

<dependency>
    <groupId>com.aizuda</groupId>
    <artifactId>snail-job-client-starter</artifactId>
    <version>${snail-job.version}</version>
</dependency>

<!-- snail-job 重试相关依赖 -->
<dependency>
    <groupId>com.aizuda</groupId>
    <artifactId>snail-job-client-retry-core</artifactId>
    <version>${snail-job.version}</version>
</dependency>

<!-- snail-job 客户端核心依赖 -->
<dependency>
    <groupId>com.aizuda</groupId>
    <artifactId>snail-job-client-job-core</artifactId>
    <version>${snail-job.version}</version>
</dependency>

Solon配置

bash

<dependency>
    <groupId>com.aizuda</groupId>
    <artifactId>snail-job-client-starter</artifactId>
    <version>${snail-job.version}</version>
</dependency>

<dependency>
    <groupId>com.aizuda</groupId>
    <artifactId>snail-job-client-solon-plugin</artifactId>
    <version>${snail-job.version}</version>
</dependency>

<!-- snail-job 重试相关依赖 -->
<dependency>
    <groupId>com.aizuda</groupId>
    <artifactId>snail-job-client-retry-core</artifactId>
    <version>${snail-job.version}</version>
</dependency>

<!-- snail-job 客户端核心依赖 -->
<dependency>
    <groupId>com.aizuda</groupId>
    <artifactId>snail-job-client-job-core</artifactId>
    <version>${snail-job.version}</version>
</dependency>

二、配置文件

2.1、基础配置

bash
# ------------------基础配置-----------------
# 服务端的地址,若服务端集群部署则此处配置域名
snail-job.server.host= 127.0.0.1
# 服务端Grpc的端口号
snail-job.server.port= 17888
# 指定客户端IP,不配置默认按照网络优先级匹配[snail-job.network.preferred-networks],若匹配失败则兜底执行`NetUtil.getLocalIpStr()`
snail-job.host= 127.0.0.1
# 指定客户端端口,不配置则默认17889
# 若指定-1则会生成随机端口
snail-job.port= 17889
# 名称空间ID,若不填为默认空间(764d604ec6fc45f68cd92514c40e9e1a)
snail-job.namespace= 764d604ec6fc45f68cd92514c40e9e1a
# 令牌,若不填则默认为(SJ_Wyz3dmsdbDOkDujOTSSoBjGQP1BMsVnj)
snail-job.token= 764d604ec6fc45f68cd92514c40e9e1a
# 通知类型默认使用grpc(since:1.6.0)
snail-job.rpc-type=grpc
# 标签 <kev, value>结构(非必填)(since:1.6.0)
# 下面是个案例
snail-job.labels.env=prod 
# 是否走新的openapi(1.7.0 暂时先关闭,1.8.0会默认打开)(since:1.7.0)
snail-job.openapiV2=false
# 默认可以不配置,不配置则取{@link SnailJobProperties.ServerConfig#getHost()}(since:1.7.0)
snail-job.openapi.host=false
# 默认是8080(since:1.7.0)
snail-job.openapi.port=8080
# 是否是https协议(since:1.7.0)
snail-job.openapi.https=false
# 公共前缀(since:1.7.0)
snail-job.openapi.prefix=snail-job
# 是否优先使用IPv4地址(since:1.7.0)
snail-job.network.prefer-ipv4=true
# 优先使用本地地址(since:1.7.0)
snail-job.network.prefer-site-local-address=true
# 优先使用的网络段列表,支持CIDR表示法(since:1.7.0) 如:192.168.1.0/24
snail-job.network.preferred-networks[0]=192.168.1.0/24
# 忽略网卡信息(since:1.7.0)
snail-job.network.preferred-networks[0]=en0

2.2、邮箱配置

bash
# ------------------邮箱配置-----------------
# 开关
snail-job.mail.enabled = true
# SMTP服务器域名
snail-job.mail.host = xxx
# SMTP服务端口
snail-job.mail.port = 465
# 是否需要用户名密码验证
snail-job.mail.auth = true
# 用户名
snail-job.mail.user = demo
# 密码
snail-job.mail.pass = xxxx
# 发送方,遵循RFC-822标准
snail-job.mail.from = xxx.qq.com
# 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL), 而不是使用一个单独的加密通信端口。
snail-job.mail.starttlsEnable = false
# 使用 SSL安全连接
snail-job.mail.sslEnable = false
# SMTP超时时长,单位毫秒,缺省值不超时
snail-job.mail.timeout = 0
# Socket连接超时值,单位毫秒,缺省值不超时
snail-job.mail.connectionTimeout = 0

2.3、重试数据批量上报滑动窗口配置

bash
# ------------------重试数据批量上报滑动窗口配置-----------------
# 窗口期单位
snail-job.retry.reportSlidingWindow.chrono-unit= seconds
# 窗口期时间长度
snail-job.retry.reportSlidingWindow.duration= 10
# 总量窗口期阈值
snail-job.retry.reportSlidingWindow.total-threshold= 50
# 窗口数量预警
snail-job.retry.reportSlidingWindow.window-total-threshold= 150

2.4、重试、调度日志远程上报滑动窗口配置

bash
# ------------------重试、调度日志远程上报滑动窗口配置-----------------
# 窗口期单位
snail-job.logSlidingWindow.chrono-unit= seconds
# 窗口期时间长度
snail-job.logSlidingWindow.duration= 5
# 总量窗口期阈值
snail-job.logSlidingWindow.total-threshold= 50
# 窗口数量预警
snail-job.logSlidingWindow.window-total-threshold= 150

2.5、调度线程池配置

bash
# ------------------调度线程池配置-----------------
snail-job.dispatcherThreadPool.corePoolSize = 16
snail-job.dispatcherThreadPool.maximumPoolSize = 16
snail-job.dispatcherThreadPool.keepAliveTime = 1
snail-job.dispatcherThreadPool.timeUnit = SECONDS
snail-job.dispatcherThreadPool.queueCapacity = 10000