开源项目 #
Master Rest API #
- 如果集成系统不是java语言开发的,无法直接使用java sdk。这时可以使用master服务的rest版本,通过http方式调用UPush接口。
- upush2-master-rest.jar和upush2-master.jar提供的服务是一样的,如果使用rest方式无需再启动upush2-master.jar
- upush2-master-rest (opens new window)是开源的SpringBoot项目,开发者可以添加微服务调用方式,添加服务注册/发现等内容,可以优雅的把UPush集成到大型分布式系统中。
开发 #
- 进入到开发者控制台下载 (opens new window)UPush服务端程序,解压到本地任意路径
- 下载upush2-master-rest (opens new window)项目,建议使用idea打开工程
- 修改pom.xml,修改${upush.path}的值为UPush服务端程序路径。例如:
<properties>
...
<upush.path>${project.basedir}/../upush2</upush.path>
</properties>
- 配置application.yml
app-secret是创建项目时生成的
master-id表示启动的是master.json中的哪个master
upush:
app-secret: # 指定项目的AppSecret
master-id: # 指定master服务ID
- 把upush相关配置和授权文件放到在src/main/resources/config下面,例如:
├── application.yml
└── config
├── xxxxxx.upush.key # 授权文件
├── xxxxxx.jks # wss证书,可选
├── log4j.properties
├── master.json
├── redis.properties
├── servers.json
├── upush.properties
└── vendor.json
- 支持spring.profiles.active环境指定,注意配置文件位置要匹配active,例如active=prod,配置路径变为:
├── application-pord.yml
└── config
└── prod
├── xxxxxx.upush.key # 授权文件
├── xxxxxx.jks # wss证书,可选
├── log4j.properties
├── master.json
├── redis.properties
├── servers.json
├── upush.properties
└── vendor.json
idea菜单->Run->Edit Configurations->添加VM options: -DDebug
避免启动无法找到配置文件。启动即可
打包 #
修改pom.xml,不建议把配置文件打入jar中,pom.xml已经配置好了,把注释部分打开即可
macos和linux直接运行脚本./package.sh
windows按照maven打包方式操作即可,完成后把target下的jar(重命名去掉版本号)复制到out/upush2-master-rest在out下upush2-master-rest文件夹即是完整运行环境,例如:
├── config # upush相关配置文件,包括application.yml
├── libs # 依赖jar,打包时依赖会自动拷贝到这里
├── logs # 日志文件夹,初始为空
├── start.bat # windows启动脚本
├── start.sh # macos/linux 启动脚本
└── upush2-master-rest.jar
- 这里是已经打好的包 (opens new window),下载可以直接使用,配置方式和正常的master一致,参照文档中配置说明,除此之外还需要拷贝upush2-api.jar,upush2-rpc.jar,upush2-common.jar,upush2-master.jar到libs文件夹下。
自定义集群分配规则 #
项目地址 (opens new window) 实现接口ClusterAssignPolicy,打包后直接把jar放到libs下,修改配置cluster.assign.policy=CM,设置cluster.assign.policy.class为实现类名,也可以在管理后台修改(服务/配置/服务配置/集群分配策略)。
public interface ClusterAssignPolicy {
/**
* 分配集群
* @param masterId masterId,如果master使用DNS负载均衡,可以根据masterId分配集群
* @param clusterIds 集群ID集合
* @param assignedClientInfo 客户端信息
* @return clusterId 集群ID
*/
String assign(String masterId, List<String> clusterIds, AssignedClientInfo assignedClientInfo);
}
日志服务 #
实现log4j的远程日志服务,在输出的每条日志前加入了服务器标记,建议在非单机部署时使用。项目地址 (opens new window),打包后运行范例 (opens new window),编译源码打包后替换jar运行
管理后台 #
管理后台的后端项目(基于Springboot),前端项目(Vue),对付费用户开源。
厂商推送 #
厂商推送服务端实现对付费用户开源 可做二次开发,根据推送参数vendorExtra实现个性化厂商推送