我们的生产环境由n台Apache Web服务器通过前端负载均衡器通过浏览器访问。 很典型。 我们99%的HTTP请求都是由这个并行架构来处理的,没有任何问题。
不幸的是,Apache处理的请求中有1%需要访问外部服务器上的层级SOAP Web服务,这绝对无法处理并发性 ,导致许多严重错误。
我正在寻找一种方法来通过一种代理来pipe理这些SOAP请求,能够将请求同步排队并locking到外部服务器。
像Pound,Nginx,Squid或Varnish这样的标准代理是否实现了这样的队列?
亚马逊有一个你可以使用的服务。 它被称为简单队列服务。 http://aws.amazon.com/sqs/
您可以使用它来对作业进行排队,并逐个从队列中select它们。
收到消息时,在处理过程中会变为“locking”状态。 这使其他计算机不能同时处理消息。 如果消息处理失败,则locking将过期,消息将再次可用。 在应用程序需要更多处理时间的情况下,可以通过ChangeMessageVisibility操作dynamic更改“locking”超时。
有许多替代品可以适合您的使用情况:
Redis可能是解决这类问题的方法。 因为它处理primefaces操作 。