2

環境: C# Winforms、SDK 1.2

私は Couchbase を初めて使用するので、何か見落としている可能性があります。私が達成したいのは、XDCR によって複製された後にドキュメントが更新されたときのクライアントへのプッシュ通知です。私のユースケースは次のとおりです。

  • それぞれに 1 つのノードを持つ 2 つのクラスター (CL1、CL2)
  • K1 が CL1 に接続され、K2 が CL2 に接続されているような 2 つのクライアント (K1、K2)
  • K1 が DocA に変更を加える
  • DocA は CL1 から XDCR を介して複製されます --> CL2
  • DocA が CL2 クライアントにあると、K2 に通知されます

これは Observe() メソッドでできることですか、それとも別のアプローチがありますか? TAP の使用は、変更される可能性のある内部 API であるため、リスクが高いようです。

--D

4

1 に答える 1

2

Couchbaseフォーラムにも回答が投稿されましたが、ここにコピーします... http://www.couchbase.com/forums/thread/notify-client-change#comment-1008518

クライアントは XDCR レプリケーションを認識せず、XDCR イベントへのフックもありません。残念ながら、キーがクラスターに複製されたことをクライアント インスタンスが認識する方法はありません。

K2 が C2 にレプリケートされたデータを操作する必要があると仮定すると、(明らかにテストされていない) 別の方法は、C2 を ASP.NET エンドポイントにレプリケートすることです。この場合、私が最近書いた Nancy エンドポイント ( http://blog.couchbase.com/xdcr-aspnet-and-nancy ) を使用できます。

  1. K1 は C1 にキーを書き込みます
  2. C1(XDCR経由)がキーをC2に送信
  3. C2 (XDCR 経由) がキーを Nancy エンドポイントに送信します。
  4. K2 は IReplicationHandler サブクラス内で使用されます (詳細についてはブログを参照してください)。

したがって、基本的に、C1 XDCR が C2 にレプリケートされた後、C2 からアプリにプッシュします。これにより、Nancy を介して、または私の Nancy アプリから既存の Web アプリにコードをコピーすることにより、XDCR エンドポイントが定義されます。エンドポイント ホストは重要ではありませんが、URI (/pools など) と JSON 応答は重要です。繰り返しますが、ここでの考え方は、K2 アプリを 3 番目の XDCR エンドポイントとして扱いますが、C2 が C1 からキーを取得した後にのみキーを受け取るものです。

Observe は、キーを格納または削除する際の耐久性要件を指定するために使用されます。たとえば、キーがマスター ノードに永続化され、2 つのレプリカ ノードに (メモリまたはディスクに) レプリケートされた場合にのみ、ストア操作が成功したと見なすようにクライアントに依頼できます。http://www.couchbase.com/docs/couchbase-sdk-net-1.2/couchbase-sdk-net-st ...

于 2013-01-18T14:55:27.797 に答える