1

マルチスレッド処理でCassandra用のc#ドライバーを使用しています。最初に、接続を作成してコマンドを実行し、作業が完了したら接続を閉じようとしました。しかし、私にはうまくいかないようです。ホストが利用できないという例外がある場合があります。

そこで、静的接続での作業に変更しました。それもうまくいくようです。しかし、スレッドの動作が速すぎると、スレッドは再び壊れます。Thread.Sleep を 1 秒間置く必要があり、それが機能します。

そして、この静的ソリューションでは、非同期プロセス、BeginExecute を使用しようとしましたが、No Hosts Available という例外でうまくいきません。

したがって、Cassandra c# ドライバーを使用したマルチスレッド処理について、より良いアイデアや実装をお持ちの方がいらっしゃいましたら、共有していただければ幸いです。

前もって感謝します。

乾杯、キン

4

3 に答える 3

1

CassandraSessionは一度に 1 つの接続のみを持つことができます。考えてみると、おそらくスレッドセーフではありません。ただし、接続プールはスレッドセーフであるため、それを使用すると、常に高可用性接続が得られます

于 2013-08-27T12:56:24.350 に答える
0
  1. セットアップが接続要件を満たしていることを確認してください

  2. C# ドライバーは、マルチスレッド環境 (1 つのクラスター オブジェクト、1 つのセッション オブジェクト/キースペース) で確実に動作するはずです。

  3. コードを見ずに NoHostAvailable 例外が発生する理由を説明するのは困難です。

于 2013-08-30T08:32:12.387 に答える