云模式:为 Windows Azure 设计和部署服务
2010-03-26 00:00:00 来源:WEB开发网可以使用 Windows Azure Queues(自 11 月的 CTP 版本起,可以直接在角色实例之间进行通信)实现 Web 角色和工作者角色之间的通信(有关这些角色的说明,请参见 msdn.microsoft.com/magazine/dd727504),Windows Azure Queues 在默认情况下同时具有异步性和可靠性。这并非自动表示最终用户和 Woodgrove Bank 的服务之间的通信是可靠的。事实上,客户和 Web 角色中的服务之间的通信线路明显不可靠。Woodgrove Bank 团队决定不解决这个问题,因为在要进行通信的客户的通信线路上完全实现可靠性机制需要客户遵循与 Woodgrove Bank 相同的技术选择。这是不切实际并且令人不快的。
开始使用队列
在客户向 UserAccountService 发送消息后,该消息将被置于 Windows Azure Queue 中,客户会接收到确认消息。接着,UserAccountWorker 将能够从队列获取消息。如果与 UserAccountWorker 的连接发生中断,由于消息安全存储在队列中,将不会丢失。
如果 UserAccountWorker 内的处理出现问题,消息不会从队列中删除。要确保这一点,应仅在完成工作后调用队列中的 DeleteMessage 方法。如果在超时(将超时硬编码为 20 秒)之前 UserAccountWorker 没有完成消息处理,则该消息将再次在队列中可见,以便其他 UserAccountWorker 实例可以尝试对其进行处理。
在客户向 UserAccountService 发送消息后,该消息将被置于队列中,客户将接收到 TransactionResponse 类型的确认消息。从客户的角度出发,应使用异步队列。ReliableMessaging 用于 UserAccountStorageAction 和 AccountStorageWorker 之间的通信,它们分别驻留在 Web 角色和工作者角色中。以下显示了调用处理程序如何将消息置于队列中:
更多精彩
赞助商链接