Azkaban通过API动态传递参数
生活随笔
收集整理的這篇文章主要介紹了
Azkaban通过API动态传递参数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需求
目前有一個普通的java process作業,
java 內容如下:
job如下:
type=javaprocess Xms=1024M Xmx=2048M java.class=shell.GenerateShell classpath=./utils-1.0-SNAPSHOT-jar-with-dependencies.jar task=${param.mytask} main.args=${task}這個job的類型是javaprocess
程序入口是shell.GenerateShell
執行這個程序需要一個參數,這個參數需要動態的進行獲取。
解決方式
在使用azkaban API的過程中指定參數flowOverride[param.mytask],通過這種方式可以動態傳遞給job中的main.agrs,內容如下:
public JSONObject executeFlow(String sessionID, String project, String flow, String task) {String url = URL + "/executor?ajax=executeFlow";HttpHeaders httpHeaders = new HttpHeaders();LinkedMultiValueMap<String, String> linkedMultiValueMap = new LinkedMultiValueMap<>();linkedMultiValueMap.add("session.id", sessionID);linkedMultiValueMap.add("project", project);linkedMultiValueMap.add("flow", flow);linkedMultiValueMap.add("flowOverride[param.mytask]", task);HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<>(linkedMultiValueMap, httpHeaders);ResponseEntity<String> result = restTemplate.postForEntity(url, httpEntity, String.class);return JSONObject.parseObject(result.getBody());}當然需要首先獲取到sessionID。
注意:參數使用雙引號括起來,否則在傳遞參數時會被空格分隔開。
總結
以上是生活随笔為你收集整理的Azkaban通过API动态传递参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这款应用能让所有安卓手机与PC多屏协同安
- 下一篇: 有意思的对联(4副很精彩的对联)