我正在尝试同时使用一个 WebJob 和一个 Worker Role。
WebJob 将有一个 BlobTrigger,每次将 blob 添加到容器时,都会将一条新消息添加到 Azure 存储队列(称为挂起 blob)。
此外,还有一个 Worker Role,它将从待处理的 Blob队列中汇集消息,并将 Blob 名称添加到一个内部阻塞集合中,该集合将由 Worker Role 触发的多个任务同时处理。
我在这个解决方案中考虑过可扩展性,因为会有很多 blob 到达容器,所以我不希望 CPU 消耗达到峰值。
在开发解决方案时,我想到了一些问题:
- 有没有办法检查 Azure 存储队列里面是否有消息?
- 如果我调用 GetMessage 方法并且队列没有任何消息,则执行将被阻止,直到有新消息到达?
- 有没有办法手动删除 blob 收据?