6

我第一次遇到 Amazon SQS 和 Amazon SNS。我将在我的 Java 工作场所使用这些。

关于这些,我有几个问题,

  1. 我没有那么多 Java 知识,我不能说我已经达到了那么高级,但是是的,我可以说我有中级知识。那么我可以触摸这些区域吗?

  2. 这些服务到底是什么,它们有什么用处?一个真实世界的例子会很有用。

任何建议或意见都会很有用。

4

2 回答 2

6

我不会说您需要高级 Java 知识才能使用它们 - 但为什么不尝试自己判断呢?适用于 Java 的 AWS 开发工具包可在http://aws.amazon.com/sdkforjava/获得

在http://aws.amazon.com/sns/http://aws.amazon.com/sqs/上有介绍性信息以及详细文档的链接。

当您需要通过 Internet 在系统的各个部分之间发送可靠的异步消息时,SQS 非常有用。它为您节省了设置自己的可靠消息传递服务的工作量和费用,并提供了可扩展性。当消息不必立即到达但不能丢失时,它很有用。账单(销售记录)和其他非时间关键的金融交易就是一个例子。请注意,SQS 提供“至少一次”行为——在极少数情况下,它可能会多次传递消息。

SNS 是发布订阅的,而不是基于队列的;它是一种使用主题和订阅而不是普通队列的更受消费者驱动的消息传递方式。当信息的生产者可能不知道信息的所有潜在消费者以及他们的确切需求时,这种风格很有用。请参阅位于http://aws.amazon.com/sns/faqs/#0的 FAQ 中的示例应用程序

于 2012-09-13T21:45:19.460 回答
6

它们应该用于支持您的软件组件之间的可靠通信,我认为这里的主要问题是为什么您应该将您的服务分成几个组件/层。

我想出了一些用例:

  • 可能影响 Web 响应的长时间运行过程:最常见的示例是订单处理,其中支付/信用卡收费可能有点慢,您创建一个服务,让用户快速响应,然后向 SQS 队列发送消息,它会触发一个后台组件来完成所有繁重的工作;

  • 不同的可扩展性配置文件:一个常见的示例是您上传视频并将其编码到多个平台的 Web 应用程序,您可能希望创建具有不同组件、视频上传/浏览(许多服务器)和视频编码较少服务器但具有更高的容量,用法将类似于前面的示例。

  • 触发并行活动的执行:订单处理完成后,您必须向您的客户发送电子邮件,通知仓库准备海关交货,告诉运输服务在仓库取货并交付到客户地址,然后您应该使用发布业务事件的 SNS 主题,并让 3 个组件监听执行以下操作:

    1. 邮件格式化和发送
    2. 仓库服务电话
    3. 运输服务呼叫

可能还有许多其他使用场景,如果您告诉您的解决方案需要做什么,也许我们可以更准确地提供帮助。

于 2012-09-14T09:38:28.450 回答