开源项目 #

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集成到大型分布式系统中。

开发 #

<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
├── 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实现个性化厂商推送

上次更新: 12/28/2022, 7:16:05 PM