2

大規模な同時 S3 呼び出しを実行するのに適した scala ライブラリは何ですか? また、ライブラリの使用方法を示すサンプル コードはどこにありますか? 十分な解決策を見つけることなく、何日も検索して実験してきました。

多くのライブラリは、S3 呼び出しを個別のブロッキング呼び出しとして実装しています。スレッド化されたブロッキング呼び出しとして実装するものもあります。約束/先物をサポートする可能性をほのめかす人もいますが、不十分な例を示しています.

簡単な質問: S3 に URL、ヘッダー、本文を送信してすぐに返すにはどうすればよいですか? S3 が応答したときに、コンテキストで応答を取得したいと思います。

完全な質問: 1000 個の URL、ヘッダー、および本文を作成して送信し、すぐに返して、各応答が到着したら、その応答を正しい受信者に接続するにはどうすればよいですか。

私が試したライブラリには次のものがあります (網羅的ではありません)。

  • ディスパッチ(依然として最も可能性の高い候補)
  • akka.dispatch
  • ジェット3t
  • s3lib

どんな反応でも大歓迎です。

4

2 に答える 2

0

NIO 上に構築されたhttps://github.com/dispatch/rebootを確認してください。

これを使用するには、次のような簡単なことを行うことができます

import dispatch._

def foo = {
  val svc = url("http://api.hostip.info/country.php")
  val country = Http(svc OK as.String)
  val length = for (c <- country) yield c.length
}

並列コレクション内でこれを行うことができます。これらはすべてブロック解除が約束されているため..たとえば、これを 1000 回並列に実行するには、次のように入力します。

(1 to 1000).par.foreach(foo)
于 2012-10-07T02:18:42.603 に答える
0

コードを最初に見ると、Apache Async HttpClient は真に非同期です。

http://hc.apache.org/httpcomponents-asyncclient-dev/examples.html

完了ハンドラーから Scala フューチャーを作成する単純なラッパーを作成できます。

Grizzly/Netty を利用した http クライアントも確認できます。

于 2013-06-04T12:12:09.983 に答える