2016-11-20 20 views
0

私は各スレッドがJavaのCassandraにアクセスするマルチスレッドアプリケーションを開発しています。 複数のクラスタを作成し、各アクセスまたは複数のセッションの後に閉じますか? クラスタまたはセッションを静的データメンバーとして作成できますか?JavaのCassandraへの複数同時接続

14:40:50.361 [cluster1-nio-worker-0] DEBUG com.datastax.driver.core.Connection - Connection[localhost/127.0.0.1:9042-1, inFlight=0, closed=false] was inactive for 30 seconds, sending heartbeat 
14:40:50.361 [cluster1-nio-worker-0] DEBUG com.datastax.driver.core.Connection - Connection[localhost/127.0.0.1:9042-1, inFlight=0, closed=false] heartbeat query succeeded 
+0

http://stackoverflow.com/questions/40692207/why-cant-we-share-cassandra-session-initialised-in-parent-process-to-child-proce/40692851#40692851 –

答えて

2

あなたは、マルチスレッドアプリケーションを作成している場合、私は静的メンバとしてクラスタとセッションを作成します。ここでは

staticとしての両方を宣言するときに私が得たログがあります。セッションはインスタンスごとに複数のスレッドを維持し、スレッドセーフです。 1つのセッションオブジェクトをキースペースごとに使用します。カサンドラ-javaのドライバのドキュメントから

セッションインスタンスはスレッドセーフであり、通常、単一のインスタンスは、アプリケーションごとに十分 です。指定されたセッションは、 一度に1つのキー空間にのみ "ログ"することができます(クエリが明示的に完全修飾テーブル の名前を使用していない場合、 クエリによって使用されるキースペースです)。使用されるキー空間ごとに1つのセッションを作成することができます。しかし、 は、完全修飾テーブル のクエリーで1つのセッションを常に使用できるため、この は複数のキースペースを照会する必要はありません。

+0

ありがとうございました。私はそれを行い、それが機能しましたが、一定の時間が経過すると、アプリケーションは「30秒間非アクティブで、ハートビートを送信しました...」と言って、処理を停止します。 –

+0

ハズビービートは正常ですが、ハートビートは返されません。あなたは – gasparms

+0

が完了したログで質問を編集します。質問を更新しました –

関連する問題