【发布时间】:2011-11-10 12:50:09
【问题描述】:
我正在 Windows Azure 上制作基于 Web 的系统,它处理来自不同来源的订单 - 网站或 Web 服务。我脑海中出现的第一件事是使用 Azure 消息队列从网站和 Web 服务角色到一些实际处理订单的工作角色。
我发现了几篇关于使用 Azure 的消息驱动架构的文章,它们看起来不错 - 我们从客户端获取消息,将其放入队列并在该工作线程读取之后响应用户“好的,您的操作已处理”消息并做所有的魔术。 但是这是一个问题 - 如果我想发送消息的处理结果(如果是成功则为订单 ID,如果不是则失败原因)作为对客户端的响应,我需要等到Worker Role 将处理它。问题是我没有找到好的/快速/便宜的方法来做到这一点,作为一种可能的方式我可以将消息放入处理队列并检查每个 X 毫秒是否已经处理(处理完成后,Worker 会将带有 Y Guid 的消息与结果一起处理的信息。
我不太喜欢这种等待的想法,因为订单处理时间可能从几秒到几分钟不等,如果每个客户(最多同时有 10 到 20 个)会增加系统负载检查每个 X 毫秒是否处理了他的请求(主要原因)。考虑到 Azure 表的访问率(次要原因),它也会非常昂贵。
您能否建议一些实现该功能的好方法?我正在寻找桌面应用程序中的事件等待之类的东西,鉴于高度分布,无法使用 Azure 制作。
【问题讨论】:
标签: .net design-patterns azure message-queue