利用Amazon Web Services集成企业应用程序

队列 是用于存储等待处理的消息的临时数据结构。Amazon Simple Queue Services (Amazon SQS) 是一个支持 Web 服务的高可用性可伸缩消息队列。Amazon SQS 的主要益处包括:

基于云的解决方案。由 Amazon 管理,不需使用私有基础设施,也不需要专业支持知识。

基于 Internet。任何连接到 Internet 的客户端都可以通过 Web 服务访问该服务,因此支持业务到业务(B2B)集成。

冗余。该服务在多个服务器上存储所有消息,以提供高可用性和容错。

多个并发读/写。Amazon SQS 支持多个进程同时读写一个队列,以及在处理窗口时锁定消息,以避免两个客户端同时处理一条消息。

可配置。通过使用 Amazon SQS 服务,您可以根据存储在队列中的消息的处理需求设计和锁定窗口。锁定窗口能够阻止两个队列读取器同时处理同一个队列项。对于处理时间更长的队列项,则需要更长时间地锁定窗口。锁定窗口由可见性超时参数控制,您可以给每个队列配置该参数。

易于使用的 API。它为常见的语言(包括 Java 和 Microsoft .NET 平台)提供 API 包装器,以支持快速开发并无缝地集成到现有应用程序中。

低成本的解决方案。公司仅需为它们的 HTTP 请求使用的带宽付费;Amazon SQS 不收取其他额外的费用。

在开始 Amazon SQS 开发之前,了解它的一些特征是非常有帮助的。如果不了解这些特征,您刚开始使用 Amazon SQS 时可能会碰到挫折,或感到困惑。

首先,Amazon 不能保证队列项的处理顺序。这意味着先进先出(first-in-first-out,FIFO)处理不得到保证,这在很多消息队列实现中都很常见。Amazon 仅保证所有消息都分发出去。

Amazon SQS 的第二大特征是最终一致性。大型数据库系统的主要特征是一致性、高可用性和可伸缩性。Amazon 不是关注所有 3 个特征,而是主要关注高可用性和可伸缩性,然后再以此为基础提供最终的一致性。这意味着 Amazon 通过将所有消息发送到多个服务器来实现高可用性和可伸缩性。Amazon 保证最终会将所有消息分发出去,但不保证什么时候分发它们。从实用的角度看,这意味着假如您向一个队列发送 3 条消息,当下次尝试接收这些消息时,不一定能收到所有 3 条消息。您可能在一个 Read 中收到所有 3 条消息,或在第一个 Read 中收到前两条消息,在第二个 Read 中收到第三条消息。如果您持续地轮询该队列,最终肯定能收到所有 3 条消息。

为了开始使用 Amazon SQS,您必须根据自己使用的语言获取 Amazon SQS 的 API 库。Amazon 为所有常见的语言都提供了一个库,比如 Perl、Microsoft Visual Basic.NET、C#、Java 和 PHP。这些库是开源的,并且易于使用。

通过 Java 语言使用 Amazon SQS

现在您首先学习如何使用 Java 语言创建队列、发送消息和接收消息。第一步是创建一个 Amazon SQS 队列。清单 1 中的代码显示了如何为 Amazon SQS 创建 HTTP 客户端、实例化 CreateQueueRequest 对象和调用队列创建请求。Access Key ID(由 20 个字母和数字组成)是请求身份验证或读取队列项所需的密匙。为了创建或操作队列项,您需要使用 Secret Access Key(由 40 个字母和数字组成)。注册 Amazon 时就会收到这些密匙。

清单 1. 创建 Amazon SQS 队列

String queueName = "TestQueue";

// create http client
AmazonSQS service = new AmazonSQSClient(accessKeyId, secretAccessKey);

// instantiate create queue request
CreateQueueRequest request = new CreateQueueRequest();
request.setQueueName(queueName);
request.setDefaultVisibilityTimeout(30);

// execute create queue operation and get the server response
System.out.print("Creating Queue: " + queueName);
CreateQueueResponse response = service.createQueue(request);
if (response.isSetCreateQueueResult()) {
 System.out.print("Create Queue Result:");
 CreateQueueResult createQueueResult = response.getCreateQueueResult();
 if (createQueueResult.isSetQueueUrl()) {
 System.out.print("Queue Url: " + createQueueResult.getQueueUrl());
 }
}

时间: 2025-01-24 13:55:10

利用Amazon Web Services集成企业应用程序的相关文章

利用 Amazon Web Services 集成企业应用程序--使用 Amazon SQS 发送 XML 消息

探索如何利用 XML 和 Amazon Web Services 集成企业应用程序,以及使用Microsoft® .NET (C#) 和 Java 平台构建跨平台应用程序集成功能. 队列 是用于存储等待处理的消息的临时数据结构.Amazon Simple Queue Services (Amazon SQS) 是一个支持 Web 服务的高可用性可伸缩消息队列.Amazon SQS 的主要益处包括: 基于云的解决方案.由 Amazon 管理,不需使用私有基础设施,也不需要专业支持知识. 基于 In

利用Amazon Web Services(AWS)构建可扩展的WebApp应用

在上次(2008.01.10)简单了写了一篇<RubyOnRails + S3 + EC2 = ? >至今已经有段时间了,经过一段时间的发展,Amazon Web Services到今天已经相当成熟了,一整套的解决方案可以给Web App带来很多的便利,再一系列的改进措施后,AWS基本上是成熟了. 上面这个图片来源于slideshare上的一个PPT"Using Amazon SimpleDB with Ruby on Rails",正如我上面截取的这个图片说的: 静态文件

用 Amazon Web Services 进行云计算,第 1 部分: 简介

学习基本的 Amazon SimpleDB (SDB) 概念,研究 boto(一个用于与 SDB 交互的开放源码 Python 库)提供的一些功能.在这个 "用 Amazon Web Services 进行云计算" 系列中,学习如何使用 Amazon Web Services 进行云计算.了解这些服务如何为设计和构建可伸缩.可靠的应用程序提供一种可选方案.第一篇文章解释虚拟基础设施的构建块的特性.学习如何使用 Amazon Web Services 构建 Web 范围的系统. 什么是云

Amazon Web Services市场:API驱动型生态系统

API驱动型业务的概念近年来逐步兴起.事实上,人们发现在数字化业务领域,应用程序编程接口与产品间的界线正变得愈发模糊. 其基本概念确实非常强大:发布API.允许客户参与.最终利用其实现价值交换. 为了切实完成这项目标,我们当然需要具备一定规模的严肃业务以及与之相匹配的技术架构.举例来说,API最好得到严格定义,否则您的业务可能遭遇意想不到的影响.另外,API必须易于使用,否则将带来噩梦般的客户体验.另外,API必须能够进行成功整合,从而通过切实起效以实现对接.监控及获利. Amazon Web

用 Amazon Web Services 进行云计算,第 2 部分: 用 Amazon Simple Storage Service (S3) 在云中存储数据

学习基本的 Amazon SimpleDB (SDB) 概念,研究 boto(一个用于与 SDB 交互的开放源码 Python 库)提供的一些功能.在这个 "用 Amazon Web Services 进行云计算" 系列中,学习如何使用 Amazon Web Services 进行云计算.了解这些服务如何为设计和构建可伸缩.可靠的应用程序提供一种可选方案.本文讨论 Amazon Simple Storage Service (S3) 提供的可伸缩.高响应性的服务.了解用于与 S3 交互

在NetBeans中运行Amazon Web Services

Amazon提供了一个富web服务接口来访问他们的在线内容.为了帮助您理解如何使用这 些Web服务.Amazon还提供了一个全面的示例应用来展示如何使用所有被暴露出的操作.通 过一步步的操作,本文向您展示如何在NetBeans IDE中修改.构建.运行以及调试mazon的 示例应用程序.进而让您了解所有NetBeans的优点,比如代码补全.代码链接以及集成的 Javadoc帮助.还有调试程序的功能,尽管是单步的但监控的变量能够让您深入了解Amazon web服务的运行机制. 配置环境 安装Jav

用 Amazon Web Services 进行云计算,第 3 部分: 用 EC2 根据需要提供服务器

学习基本的 Amazon SimpleDB (SDB) 概念,研究 boto(一个用于与 SDB 交互的开放源码 Python 库)提供的一些功能.在这个 "用 Amazon Web Services 进行云计算" 系列中,学习如何使用 Amazon Web Services 进行云计算.了解这些服务如何为设计和构建可伸缩.可靠的应用程序提供一种可选方案.本文介绍 Amazon Elastic Compute Cloud (EC2) 提供的虚拟服务器.了解 EC2 如何帮助动态地配置应

Java 与 .NET 的基于 WS-Security的Web Services集成实现(上)

services|web Java 与 .NET 的基于 WS-Security的Web Services集成实现 rottenapple 本文适用读者: Web Services开发人员 应具备的知识: 使用过VS.NET2003 +WSE开发过Web Services,会使用Jbuilder9开发简单的java应用程序. 一:内容简介 WS-Security描述通过消息完整性,消息机密性和单独消息认证提供保护质量的SOAP消息传递增强.适用于下列场合: 1. 客户必须能够确定消息来自哪个人并

Java 与 .NET 的基于 WS-Security的Web Services集成实现(下)

services|web Java 与 .NET 的基于 WS-Security的Web Services集成实现(下) rottenapple 4. 打开Jbuilder9 ,新建一个java 类,命名为TestNetService.并将axis-wsse-1.0的jar包添加到Jbuilder的jdk中(Tools->configions jdks->class tab->add)代码如下: package MyWebServiceJavaClient; import java.ut