将Amazon SQS直接暴露给客户或通过Web服务作为代理



我想在我的应用程序中使用Amazon SQS来排队来自其他不属于我的外部系统的请求。

更好的方法是,直接公开SQS队列和所需的消息格式,或者发布对请求进行排队的web服务(WCF)。

我还读到SQS对于单个访问来说相对较慢,但我说得对吗?它可以轻松处理来自不同客户端的大量并发访问?

最佳Thomas

这在很大程度上是一个偏好问题,在一定程度上取决于您的情况。但我的建议是用你自己的网络服务来包装它。

构建您的web服务允许您执行验证、节流、模式版本控制等操作。例如,您可以拒绝无效消息,并立即向发件人提供同步反馈。如果外部系统直接发布到您的队列,那么无效消息将成为您的问题,而不是他们的问题。如果您修改了架构并希望拒绝旧的架构消息,则必须删除它们,或者设置一个单独的反馈通道将信息反馈给发布者。这会给您的系统增加不必要的复杂性。如果需要的话,拥有网络服务甚至可以让你稍后切换到其他排队技术

但是构建自己的web服务也有缺点:您自己的服务是否能够以同样低的延迟处理与SQS API相同的负载?它不会像SQS那样无限扩展,那么你需要对负载的变化做出多大的响应?你有资源管理单独的服务吗?这不仅仅是给客户的AWS帐户发布到您的队列的权限。

如果你对所涉及的额外工作感到满意,并且你想要一个更经得起未来考验的系统,IMHO,那么构建web服务包装器是值得的。

最新更新