前回はcURLを利用してドキュメントの変更を受信してみました。今回はその続きで、channelを利用してみましょう。
SyncGatewayのチャネル機能を使うと、JSONドキュメントのルーティング管理ができます。特定のユーザ間で共有するドキュメントや、データ種別により後続のシステムへ振り分ける際に利用できます。
- Sync Function
- filterとchannel
- cURLで実行してみよう
Sync Function
SyncGatewayでは、保存するJSONドキュメント内の任意の項目を、チャネルの値として利用できます。どの項目をチャネルとして利用するのかは、Sync Functionで定義します。
ここでは、デフォルトのSync Functionをそのまま利用し、JSONドキュメント内の”channels”という項目をチャネルとします。
filterとchannels
チャネルを指定して変更を受信するには、changes APIを呼び出す際にfilterとchannelsオプションを指定します。
SyncGatewayのソースを見ると、channelsを指定しても、デフォルトではユーザが参照できるすべてのチャネルを対象とするようです。
channelsで指定したチャネルだけの変更を受信するには、filterも指定する必要があります。現在はfilterには”sync_gateway/bychannel”しか指定できないようですね。
cURLでチャネルを指定して変更を受信するには、以下のコマンドを実行します:
cURLで実行してみよう
ターミナルを3つ立ち上げて、それぞれで以下のコマンドを実行してみましょう:
- チャネルaを受信
- チャネルbを受信
- チャネルa, bへルーティングされるドキュメントを保存
ドキュメントの登録には以下のコマンドを利用します、チャネルa, bそれぞれに3件ずつJSONドキュメントを流します:
ターミナル1の結果:
ターミナル2の結果:
JSONドキュメント内のchannels要素によって、チャネルが振り分けられましたね!
これを使えばJSONドキュメントの処理対象を絞ったり、changesを利用した後続の処理を分割し、スループットを高めることもできそうですね。