我想在我的应用程序中使用 Amazon SQS 对来自不属于我的其他外部系统的请求进行排队。
这样做的更好方法是什么,直接公开 SQS 队列和所需的消息格式或发布对请求进行排队的 Web 服务 (WCF)。
我还读到 SQS 对于单次访问来说相对较慢,但它可以轻松处理来自不同客户端的大量并发访问,我说得对吗?
最佳托马斯
我想在我的应用程序中使用 Amazon SQS 对来自不属于我的其他外部系统的请求进行排队。
这样做的更好方法是什么,直接公开 SQS 队列和所需的消息格式或发布对请求进行排队的 Web 服务 (WCF)。
我还读到 SQS 对于单次访问来说相对较慢,但它可以轻松处理来自不同客户端的大量并发访问,我说得对吗?
最佳托马斯
这在很大程度上是一个偏好问题,并且在一定程度上取决于您的情况。但我的建议是用你自己的网络服务包装它。
构建您的 Web 服务允许您执行验证、限制、模式版本控制等操作。例如,您可以拒绝无效消息,并立即向发送者提供同步反馈。如果外部系统直接发布到您的队列,那么无效消息将成为您的问题而不是他们的问题,如果您修改架构并想要拒绝旧架构消息,那么您要么必须删除它们,要么设置一个单独的反向通道来向发布者反馈信息。这给您的系统增加了不必要的复杂性。如果需要,拥有 Web 服务甚至可以让您稍后切换到其他排队技术。
但是构建自己的 Web 服务也有缺点:您自己的服务是否能够以相同的低延迟处理与 SQS API 相同的负载?它不会像 SQS 那样无限扩展,那么您需要对负载变化做出多大的响应?您是否拥有管理单独服务的资源?这不仅仅是授予客户的 AWS 账户发布到您的队列的权限。
如果您对所涉及的额外工作感到满意,并且想要一个更加面向未来的系统,恕我直言,构建 Web 服务包装器是值得的。