commons-aws, 通用AWS服务的流式/异步 Scala 客户端

分享于 

5分钟阅读

GitHub

  繁體 雙語
Streaming / asynchronous Scala client for common AWS services
  • 源代码名称:commons-aws
  • 源代码网址:http://www.github.com/MfgLabs/commons-aws
  • commons-aws源代码文档
  • commons-aws源代码下载
  • Git URL:
    git://www.github.com/MfgLabs/commons-aws.git
    Git Clone代码到本地:
    git clone http://www.github.com/MfgLabs/commons-aws
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/MfgLabs/commons-aws
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    通用AWS服务的流/异步 Scala 客户端

    通用AWS服务的流式/异步 Scala 客户端。 如果可能,客户端公开返回流的Akka Sources/Flows/Sinks的方法以提供流设备。

    客户端使用内部管理的线程池,并针对阻塞操作进行优化。

    这个库大量使用了我们的扩展库Akka流 mfglabs/akka-stream-extensions

    解析程序

    resolvers ++=Seq(
     Resolver.bintrayRepo("mfglabs", "maven")
    )

    依赖项

    有三个软件包可用:

    libraryDependencies +="com.mfglabs"%%"commons-aws-cloudwatch"%"0.12.2"libraryDependencies +="com.mfglabs"%%"commons-aws-s3"%"0.12.2"libraryDependencies +="com.mfglabs"%%"commons-aws-sqs"%"0.12.2"

    变更日志在这里

    用法

    Scaladoc在那里有可用的

    S3
    importcom.mfglabs.commons.aws.s3._valclient=AmazonS3Client()()) // client with un-materialized composable Source/Flow/SinkvalfileStream:Source[ByteString, Unit] = client.getFileAsStream(bucket, key)valmultipartfileStream:Source[ByteString, Unit] = client.getMultipartFileAsStream(bucket, prefix)
    someBinaryStream.via(
     client.uploadStreamAsFile(bucket, key, chunkUploadConcurrency =2)
    )
    someBinaryStream.via(
     client.uploadStreamAsMultipartFile(
     bucket,
     prefix,
     nbChunkPerFile =10000,
     chunkUploadConcurrency =2 )
    )valops= client.materialized(flowMaterializer) // client with added materialized methodsvalfile:Future[ByteString] = ops.getFile(bucket, key)// More methods, check the source code

    请注意,你不需要任何隐式 scala.concurrent.ExecutionContext,因为它是由 [[AmazonS3Client] ] 本身提供和管理的。

    还有可以提供自定义的智能 AmazonS3Client 构造器。 java.util.concurrent.ExecutorService 如果你想管理你的线程池。

    importcom.mfglabs.commons.aws.sqs._valsqs=AmazonSQSClient()()valsender:Flow[String, SendMessageResult, Unit] =Flow[String].map { body =>valreq=newSendMessageRequest()
     req.setMessageBody(body)
     req.setQueueUrl(queueUrl)
     req
     }
    . via(sqs.sendMessageAsStream())valreceiver:Source[Message, Unit] = sqs.receiveMessageAsStream(queueUrl, autoAck =false)

    请注意,你不需要任何隐式 scala.concurrent.ExecutionContext,因为它是由 [[AmazonSQSClient] ] 本身提供和管理的。

    还有可以提供自定义的智能 AmazonSQSClient 构造器。 java.util.concurrent.ExecutorService 如果你想管理你的线程池。

    Cloudwatch

    在你的代码中:

    importcom.mfglabs.commons.aws.cloudwatchimportcloudwatch._ // brings implicit extensions// Create the clientvalCW= cloudwatch.AmazonCloudwatchClient()()// Use itfor {
     metrics <-CW.listMetrics()
    } yield (metrics)

    请注意,你不需要任何隐式 scala.concurrent.ExecutionContext,因为它是由 [[AmazonCloudwatchClient] ] 本身提供和管理的。

    还有可以提供自定义的智能 AmazonCloudwatchClient 构造器。 java.util.concurrent.ExecutorService 如果你想管理你的线程池。

    许可证

    这里软件是 Apache 2许可证下的许可证,请在下面报价。

    在Apache许可以证下许可以证版本 2.0 ("许可以证") ;你可以能不使用这里文件,除了符合许可以证。 你可以获得许可证的副本在*

    http://www.apache.org/licenses/LICENSE-2.0

    在规定的法律或者书面许可下,在许可条款下分发的软件在不保证任何种类的担保或者条件的前提下分发,或者明示或者隐含。 查看许可协议下特定语言的许可权限和限制的许可证。


    COM  COMM  str  服务  SCA  services  
    相关文章