我希望弄清楚我需要订阅哪些主题,以使下一个工作在AWS IoT中脱颖而出。
基于this documentation,看来我应该只需要订阅notify-next
主题。但是,这样做时,即使我发出对作业$next
的描述请求,我的应用程序启动时实际上也不会得到下一个作业。该信息来自jobs/$next/get/accepted
主题。我也需要订阅该主题吗?如果同时订阅这两个职位,我担心会得到重复的职位。
这是一些使用AWSIoTMQTTThingJobsClient的python代码,不有效。这只会在下一份工作发生变化时通知我,启动时我没有得到下一份原始工作。
client.createJobSubscription(
callback=handle_job,
jobExecutionType=jobExecutionTopicType.JOB_NOTIFY_NEXT_TOPIC)
client.sendJobsDescribe('$next')
理想情况下,我的应用程序执行以下操作:
我可以通过将上面的代码更改为此来实现
client.createJobSubscription(
callback=handle_job,
jobExecutionType=jobExecutionTopicType.JOB_DESCRIBE_TOPIC,
jobReplyType=jobExecutionTopicReplyType.JOB_ACCEPTED_REPLY_TYPE,
jobId='$next')
client.createJobSubscription(
callback=handle_job,
jobExecutionType=jobExecutionTopicType.JOB_NOTIFY_NEXT_TOPIC)
client.sendJobsDescribe('$next')
基本上,将另一个订户添加到jobs/$next/get/accepted
中,以便可以提取第一个作业。但是在应用程序的其余时间中,只需使用notify-next
主题。只是大多数示例代码或文档表明我不需要额外的订阅,因此我想确保自己没有做错任何事情。