AWS IoT 提供了一种名为“Jobs”的服务,可以用于定期执行设备上的任务。 如果需要在设备上执行任务,但不需要即时响应,则可以使用长时间运行的 Jobs。 但是,在使用 Jobs 时,会发现作业被排队时会倒序执行,这会导致任务执行出现问题。
解决方法是在 Jobs 中为每个任务提供唯一的 ID,并使用此 ID 为每个作业指定优先级。可以通过修改代码,在 Jobs 中创建作业时为其指定 ID 和优先级。例如:
const AWS = require('aws-sdk'); const iot = new AWS.Iot();
const jobId = "example_job_id"; // 设置唯一 ID const jobDocument = { "message": "example_job_message" }; // 设置作业文档 const targets = ["example_target"]; // 设置作业目标 const jobTimeout = 120; // 设置作业超时时间(秒) const includeJobExecutionState = true; const priority = 1; // 设置优先级
const params = { jobId, jobDocument, targets, jobTimeout, includeJobExecutionState, priority };
iot.createJob(params, (err, data) => { if (err) { console.error(err); // 处理错误 } else { console.log(data); // 处理成功 } });
使用此方法,Jobs 将按照指定的优先级执行。