为了获得AWS IoT的下一份工作,我需要订阅哪些主题?

时间:2018-07-09 17:51:21

标签: amazon-web-services aws-iot

我希望弄清楚我需要订阅哪些主题,以使下一个工作在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主题。只是大多数示例代码或文档表明我不需要额外的订阅,因此我想确保自己没有做错任何事情。

0 个答案:

没有答案