我想将 Azure 队列用作高负载/大规模 Web 服务的状态机。
客户端将向 Web 服务端点提交请求,此时我将返回请求 ID。
然后我将消息提交到队列,以便工作角色可以处理它,但在提交过程中不会发生数据库活动。相反,我想使用消息所在的队列来表示它的当前状态。
我的问题是,如果一个工作角色从队列中抓取消息来处理它,它在该队列中变得不可见。如果我想检查该消息的处理状态,我有一个模棱两可的消息状态。消息要么丢失/从未收到,要么它在队列中但不可见,因为它正在处理中。
理想情况下,我希望能够在看不见的信息上达到顶峰。如果我找到一个与请求 id 匹配的请求,我知道如果它不可见则正在处理它,或者如果它可见它正在等待处理。显然,我知道它何时完成处理,因为该操作将导致数据库写入。
那么这是否可能,或者我无法查看 Azure 队列中的不可见消息这一事实是否会导致这种情况?