我读过Queue-Centric Work Pattern (Building Real-World Cloud Apps with Azure),其中包括使用队列来提高应用程序的可靠性。首先,显示紧密耦合的应用程序:
他们说:
... Web前端与SQL数据库紧密耦合 后端。如果SQL数据库服务不可用,则用户获取 错误。
然后他们展示了一种更松散耦合的方法:
利益表示为:
如果有任何后端服务 - 例如SQL数据库或队列 监听器 - 离线,用户仍然可以提交新的Fix It任务。该 消息将排队,直到后端服务可用 试。
我的问题是 - 除非队列存在 local (并且可能仅作为一组文件系统目录存在而没有单独的队列应用程序运行)到提交队列消息的应用程序,难道我们仍然没有相同的可靠性问题吗?队列可能会破坏,就像数据库服务器可能会中断一样,连接它们的网络可能会破坏它们。
(当然,这篇文章谈到微软引用各种服务的可靠性,并显示队列在给定SLA的情况下具有稍好的正常运行时间。但是,在这个例子中,我认为应用程序在Azure上并使用Azure服务是一个实现细节。我当然看到了这种模式/架构的概括。)这就是为什么我回到关于队列位置的问题。