One Time
One Time即一次性任務(wù)調(diào)度,配置完成后任務(wù)將在設(shè)置的時(shí)間點(diǎn)執(zhí)行一次,執(zhí)行完成后調(diào)度平臺(tái)會(huì)自動(dòng)清理任務(wù),您無(wú)需在客戶端執(zhí)行刪除任務(wù)的操作。一次性任務(wù)調(diào)度適用于訂單超時(shí)未支付、自動(dòng)關(guān)閉定時(shí)日歷提醒等場(chǎng)景。本文介紹如何通過(guò)API創(chuàng)建一次性調(diào)度任務(wù)。
優(yōu)勢(shì)
精準(zhǔn)時(shí)刻:SchedulerX的一次性任務(wù)與延時(shí)消息相比,沒(méi)有固定延遲多少時(shí)間或者在多少天內(nèi)的時(shí)間限制,支持未來(lái)任意時(shí)間點(diǎn),使用簡(jiǎn)單。
豐富的任務(wù)類型:SchedulerX一次性任務(wù)適用于所有任務(wù)類型,例如Java、HTTP、Shell任務(wù)。也適用所有分布式模型,例如單機(jī)、廣播、分片、MapReduce等。
可視化運(yùn)維:SchedulerX的一次性任務(wù)和其他任務(wù)一樣,具有可視化的界面,方便您觀測(cè)和查詢。并且支持在調(diào)度時(shí)間到達(dá)之前修改任務(wù)參數(shù),支持失敗自動(dòng)重試等功能。
通過(guò)API創(chuàng)建一次性調(diào)度任務(wù)
在應(yīng)用程序的pom.xml文件中添加OpenAPI的SDK依賴。
下面以一個(gè)示例代碼說(shuō)明如何使用SDK調(diào)用API,將timeType的參數(shù)值設(shè)置為5,表示啟用一次性任務(wù)調(diào)度。
說(shuō)明關(guān)于如何配置環(huán)境變量
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
,請(qǐng)參見(jiàn)配置方案。import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest; import com.aliyuncs.schedulerx2.model.v20190430.CreateJobResponse; public class CreateJavaJob { public static void main(String[] args) throws Exception { // OpenAPI 的接入點(diǎn),具體查看上表支持地域列表以及購(gòu)買(mǎi)機(jī)器地域填寫(xiě) String regionId = "public"; /** * 1.阿里云賬號(hào)AccessKey擁有所有API的訪問(wèn)權(quán)限,建議您使用RAM用戶進(jìn)行API訪問(wèn)或日常運(yùn)維。 * 2.建議不要將AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號(hào)下所有資源的安全。 * 3.本實(shí)例以讀取環(huán)境變量方式加載AK/SK信息實(shí)現(xiàn)身份驗(yàn)證,需提前配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET, * 用戶可自行采用其他安全加密方式存儲(chǔ)身份信息。 */ String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); //產(chǎn)品名稱 String productName ="schedulerx2"; //對(duì)照支持地域列表選擇Domain填寫(xiě) String domain ="schedulerx.aliyuncs.com"; //構(gòu)建OpenAPI客戶端 DefaultProfile.addEndpoint(regionId, productName, domain); DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(defaultProfile); CreateJobRequest request = new CreateJobRequest(); request.setJobType("java"); request.setExecuteMode("standalone"); request.setDescription("test"); request.setName("一次性任務(wù)測(cè)試"); request.setClassName("com.alibaba.schedulerx.test.processor.HelloWorldJob3"); //timeType=5表示一次性任務(wù) request.setTimeType(5); //yyyy-MM-dd HH:mm:ss request.setTimeExpression("2021-12-15 12:11:00"); request.setNamespace("433d8b23-06e9-408c-aaaa-90d4d1b9a4af"); request.setGroupId("xueren_sub"); // 監(jiān)控報(bào)警 request.setTimeoutEnable(true); request.setTimeoutKillEnable(true); request.setFailEnable(true); request.setTimeout(12300L); // 高級(jí)配置,配置失敗自動(dòng)重試 request.setMaxAttempt(3); request.setAttemptInterval(30); CreateJobResponse response = client.getAcsResponse(request); if (response.getSuccess()) { System.out.println("jobId=" + response.getData().getJobId()); } else { System.out.println(response.getMessage()); } } }
API新建任務(wù)后,登錄控制臺(tái)查看任務(wù)。
在左側(cè)導(dǎo)航欄單擊應(yīng)用管理。