• PowerJob高级特性容器部署完整教程


    介绍

    powerjob提供了容器功能,用来做一些灵活的任务处理。这里容器为 JVM 级容器,而不是操作系统级容器(Docker)。(至于为什么取“容器”这个有歧义的名字是因为作者没想出来更合适的称呼,哈哈)

    用途

    • 有一些任务完全独立于业务,代码量也不大,既不希望耦合于原业务代码,也不值得再搞一套新建项目->编译->部署,或者说容器模板帮我们做了新建项目中的机械性工作,使我们可以在模板上直接书写自己的代码,不必考虑项目配置,也大大简化了部署。
    • 可以让Java程序员的开发有接近于shell脚本开发一样的方便体验。

    容器任务部署指南

    生成容器模板

    生成容器模板

    下载解压模板,开发容器工程

    下载后得到如下工程,可以在指定的package下开发代码
    模板工程

    以下是新建类的示例代码,其他部分不需要任何改动

    package org.example.demo;
    
    import org.springframework.stereotype.Component;
    import tech.powerjob.worker.core.processor.ProcessResult;
    import tech.powerjob.worker.core.processor.TaskContext;
    import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
    import tech.powerjob.worker.log.OmsLogger;
    
    /**
     * @author zhengqian
     * @date 2022.05.10
     */
    @Component
    public class SimpleProcessor implements BasicProcessor {
    
        @Override
        public ProcessResult process(TaskContext taskContext) throws Exception {
            // 在线日志功能,可以直接在控制台查看任务日志,非常便捷
            OmsLogger omsLogger = taskContext.getOmsLogger();
            omsLogger.info("SimpleProcessor start to process, current JobParams is {}.", taskContext.getJobParams());
    
            // TaskContext为任务的上下文信息,包含了在控制台录入的任务元数据,常用字段为
            // jobParams(任务参数,在控制台录入),instanceParams(任务实例参数,通过 OpenAPI 触发的任务实例才可能存在该参数)
    
            String params = taskContext.getJobParams();
    
            // 返回结果,该结果会被持久化到数据库,在前端页面直接查看,极为方便
            return new ProcessResult(true, "simple processor finished with params=" + params);
        }
    }
    

    新建容器,打包上传

    在工程目录下执行

    mvn package
    

    在工程的target目录下会生成jar包,选择 powerjob-processor-demo-1.0-SNAPSHOT-jar-with-dependencies.jar 上传。
    容器运维->新建容器,这里选择了FastJar方式,也可以选择Git方式,提供git地址来创建容器。
    新建容器

    容器部署

    容器生成后点击部署
    容器部署

    新建任务

    容器部署完,就可以新建任务,执行指定容器的指定Processor类
    新建任务

    执行,查看结果

    点击执行后,可以在查看详情和日志
    执行结果

    报错排查

    点击部署容器时没有反应,查看控制台,出现以下报错
    执行结果

    原因是服务不支持wss连接,测试wss连接的方法

    # install
    npm install -g wscat
    # wscat test
    wscat -c 'wss://xxxxx.com/container/deploy/1'
    # 返回
    error: Unexpected server response: 404
    

    解决方法:
    配置server域名时添加wss协议支持,修改nginx配置(添加最后两行):

    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    

    官方文档

    更多参数和解释参见官方文档 https://www.yuque.com/powerjob/guidence/tetw6y

  • 相关阅读:
    EF-入门操作
    Razor 页面解说
    Razor_02 第一个应用程序+Model+EF 添加
    Razor_01 第一个应用程序
    LazyCoder修仙之路
    .NET高级特性-Emit(2.2)属性
    .NET高级特性-Emit(2.1)字段
    .NET高级特性-Emit(2)类的定义
    .NET高级特性-Emit(1)
    asp.net core高级应用:TagHelper+Form
  • 原文地址:https://www.cnblogs.com/ylty/p/16254701.html
Copyright © 2020-2023  润新知