当前位置: 首页 > news >正文

手机 网站模板延安网站建设费用

手机 网站模板,延安网站建设费用,石家庄小程序开发公司,wordpress 搜索框 404在 Spring Boot 中调用 DolphinScheduler 的接口主要分为两种方式: 直接调用其 RESTful API(推荐,最常用)使用官方提供的 Java API Client(本质是对 REST API 的封装) 下面我将详细讲解这两种方式&#xff…

在 Spring Boot 中调用 DolphinScheduler 的接口主要分为两种方式:

  1. 直接调用其 RESTful API(推荐,最常用)
  2. 使用官方提供的 Java API Client(本质是对 REST API 的封装)

下面我将详细讲解这两种方式,并提供代码示例。

方式一:直接调用 RESTful API(推荐)

这是最通用、最灵活的方式。DolphinScheduler 的所有前端操作最终都指向其后端 API,我们只需要在 Spring Boot 中使用 RestTemplateWebClient 来模拟 HTTP 请求即可。

步骤 1:添加依赖

确保pom.xml 中包含 Web 依赖。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
步骤 2:编写调用代码

这里以使用 RestTemplate 为例。

a. 配置 RestTemplate 和 API 基础信息

可以在 application.yml 中配置 Dolphinscheduler 服务器的地址和凭证。

dolphinscheduler:api:base-url: http://your-dolphinscheduler-server:12345/dolphinschedulerusername: adminpassword: admin

b. 编写一个工具类(DolphinSchedulerService)来处理登录和请求

import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;@Service
public class DolphinSchedulerService {private final String baseUrl;private final String username;private final String password;private final RestTemplate restTemplate;private String sessionId; // 存储登录后的 sessionpublic DolphinSchedulerService(@Value("${dolphinscheduler.api.base-url}") String baseUrl,@Value("${dolphinscheduler.api.username}") String username,@Value("${dolphinscheduler.api.password}") String password,RestTemplate restTemplate) {this.baseUrl = baseUrl;this.username = username;this.password = password;this.restTemplate = restTemplate;}/*** 项目启动后自动登录,获取 Session*/@PostConstructpublic void login() {String url = baseUrl + "/login";// 设置请求头HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);// 设置请求体Map<String, String> loginRequest = new HashMap<>();loginRequest.put("userName", username);loginRequest.put("userPassword", password);HttpEntity<Map<String, String>> request = new HttpEntity<>(loginRequest, headers);try {ResponseEntity<Map> response = restTemplate.postForEntity(url, request, Map.class);if (response.getStatusCode() == HttpStatus.OK && response.getBody() != null) {Map<String, Object> data = (Map<String, Object>) response.getBody().get("data");this.sessionId = (String) data.get("sessionId");System.out.println("Login successful! Session ID: " + sessionId);} else {throw new RuntimeException("Login failed: " + response.getBody());}} catch (Exception e) {throw new RuntimeException("Failed to login to DolphinScheduler", e);}}/*** 创建一个通用的 GET 请求方法,自动携带 Session*/public <T> T get(String apiPath, Class<T> responseType) {HttpHeaders headers = new HttpHeaders();headers.add("sessionId", sessionId); // DolphinScheduler API 通过 sessionId 鉴权HttpEntity<String> entity = new HttpEntity<>(headers);String url = baseUrl + apiPath;ResponseEntity<T> response = restTemplate.exchange(url, HttpMethod.GET, entity, responseType);return response.getBody();}/*** 创建一个通用的 POST 请求方法,自动携带 Session*/public <T> T post(String apiPath, Object requestBody, Class<T> responseType) {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);headers.add("sessionId", sessionId);HttpEntity<Object> entity = new HttpEntity<>(requestBody, headers);String url = baseUrl + apiPath;return restTemplate.postForObject(url, entity, responseType);}// 可以类似地实现 PUT、DELETE 等方法
}

c. 在 Controller 或 Business Service 中调用具体 API

现在你可以在任何需要的地方注入 DolphinSchedulerService,并调用 Dolphinscheduler 的功能。

示例 1:查询项目列表

@RestController
@RequestMapping("/api/ds")
public class TestController {@Autowiredprivate DolphinSchedulerService dsService;@GetMapping("/projects")public Object getProjects() {// API 路径可以从官方文档找到:/projects/listreturn dsService.get("/projects/list", Object.class);}
}

示例 2:启动一个工作流实例

@Service
public class MyBusinessService {@Autowiredprivate DolphinSchedulerService dsService;public void runWorkflow(Long projectCode, Long workflowCode) {String apiPath = "/projects/" + projectCode + "/executors/start-process-instance";Map<String, Object> requestBody = new HashMap<>();requestBody.put("processDefinitionCode", workflowCode);// 其他可选参数,如失败策略、优先级、告警组等...// requestBody.put("failureStrategy", "CONTINUE");// requestBody.put("startNodeList", "node1,node2");Object response = dsService.post(apiPath, requestBody, Object.class);// 处理响应...System.out.println("Workflow started: " + response);}
}

方式二:使用官方 Java API Client

DolphinScheduler 提供了一个 dolphinscheduler-java-client 模块,它对 REST API 进行了封装。

步骤 1:添加客户端依赖

需要手动找到对应版本的客户端 JAR 包,或者从源码编译。注意:这个客户端可能不是官方主力维护的,使用时需要注意版本兼容性。

如果找不到,方式一更为稳妥。

步骤 2:使用客户端
import org.apache.dolphinscheduler.api.DolphinSchedulerClient;
import org.apache.dolphinscheduler.api.DolphinSchedulerClientFactory;
import org.apache.dolphinscheduler.api.request.ProcessStartRequest;
import org.apache.dolphinscheduler.api.response.ProcessStartResponse;// ... public void runWorkflowWithClient() {// 1. 创建客户端DolphinSchedulerClient client = DolphinSchedulerClientFactory.createClient("http://your-dolphinscheduler-server:12345","admin","admin");// 2. 构建请求ProcessStartRequest request = new ProcessStartRequest();request.setProjectName("my-project"); // 通常用名称或Code标识request.setProcessDefinitionName("my-workflow");// ... 设置其他参数try {// 3. 执行调用ProcessStartResponse response = client.startProcess(request);System.out.println("Process instance ID: " + response.getProcessInstanceId());} catch (Exception e) {e.printStackTrace();}
}

重要注意事项

  1. API 文档:所有可调用的接口及其参数,请务必查阅对应版本的 DolphinScheduler 官方 REST API 文档。通常部署好后,访问 http://your-dolphinscheduler-server:12345/dolphinscheduler/doc.html 即可看到 Swagger 文档界面。这是最准确的参考。
  2. 认证(Authentication):上述示例使用的是 Session 认证(登录后获取 sessionId 并放在 Header 中)。新版本的 DolphinScheduler 也支持 Token 认证,更适用于无状态交互。可以在安全中心生成 Token,然后直接在请求头中添加 "token: YOUR_TOKEN",无需登录步骤。
  3. 错误处理:在实际生产中,务必为每个远程调用添加完善的错误处理(try-catch)、日志记录和重试机制。
  4. 异步操作:启动工作流等操作是异步的,API 调用成功只代表提交成功,不代表工作流执行成功。需要通过查询执行实例的接口来跟踪最终状态。
  5. 参数传递:在启动工作流时,可以通过 execTypestartParams 等参数向下游任务传递自定义参数,这在动态控制流程行为时非常有用。

总结

对于大多数 Spring Boot 项目,首选方式一(直接调用 REST API)。它简单、直接、不受特定客户端库版本和维护状态的限制,并且对整个过程有完全的控制力。只需要一个 HTTP 客户端(如 RestTemplateWebClient)和官方 API 文档即可开始集成。

http://www.dtcms.com/a/599689.html

相关文章:

  • 视频网站后台管理php网站开发前景
  • 广州网站的优化wordpress 文章 页面
  • 晋城两学一做网站思科网站建设配置站点dns服务
  • 化妆品网站下载网站建设费计入哪个二级科目
  • wordpress做个人教学网站wordpress瀑布流主题
  • 大兴安岭建设局网站厂房外墙设计效果图
  • 网站建设类型的好处那些网站可以做0首付分期手机
  • 网站 栏目 英语3d网页游戏排行榜前十名
  • 网站建设+深圳+凡科全国互联网安全管理服务平台官网
  • ktv支付订房网站模板wordpress 完美搬家
  • 深圳设计网站公司网站做什么网站比较简单
  • 我的网站搜索不到了网上做家教那个网站好
  • 蓝潮网站建设做销售的 都有什么网站
  • 免费开源cms网站源码网页图片显示不出来打叉
  • 制作企业网站新闻列表页面网页设计成全视频高清免费观看好听的歌
  • 汇中建设 官方网站西安seo代运营
  • 品牌手机网站开发公司哪家好专业平面广告设计
  • 做网站媒体wordpress企业免费模板下载
  • 学院网站建设报价佛山企业推广哪家好
  • 学做网站需要懂什么软件企业网站模板图片
  • o2o电商网站建设大神自己做的下载音乐的网站
  • 东莞门户网站建设网站制作动态
  • 沈阳城市建设管理学校网站国外优秀企业网站欣赏
  • 易语言编程软件做网站超简单网站
  • 1.多线程初阶
  • 网站开发需要用到的技术网页设计软件免费版
  • wordpress 前台文章长沙seo计费管理
  • 建站公司前途wordpress宽屏插件
  • 手机自适应网站源码wordpress前端注册插件
  • 做招聘网站赚钱么优品ppt官网