2016-10-26 9 views
1

私は、ユーザーがすべてのデータ(約20フィールド)を編集できるようにするメインアプリケーションを用意しています。これが更新されると、これをサービスバストピックに追加します。このトピックには、システムの他の領域が登録されています。Azureサービスバスに関するトピックのフィルタリング

1つのフィールドが更新されている場合(電話番号)は、これらのサブスクリプションのいずれかが気になります。私はこれを処理する最善の方法は何ですか?

GitHubの例hereを見ると、それは述べて:ルールを評価することは、計算時間がかかるので、

を複雑なフィルタルールを選ぶのコストは、下の全体的なメッセージのサブスクリプションでのスループット、トピック、および名前空間レベルです。可能な限り、アプリケーションは、処理の方がはるかに効率的でスループットに与える影響が少ないため、相関フィルタをSQLライクなフィルタよりも選択する必要があります。

だから私は、私は性質がそれに基づいてBrokeredMessageクラスおよびフィルタでpropertiesプロパティを使用して更新されているが、それは上記の文に基づいて推奨されていないものを追加することができ集めることができるものから。

私はメッセージを通過させてアクションを実行させることができます(これはテーブルの行を同じ値に更新するだけです)が、これは冗長なようです。

他にもオプションがありますか?

答えて

1

そのサブスクリプションでフィルタリングする予定の値がある場合は、CorrelationFiterを使用してください。条件一致が必要な場合(例:市外局番321で始まる電話番号)、SqlFilterは大丈夫です。それは本当にあなたが実行するフィルタリングの量に依存します。私の提案はベンチマークとパフォーマンスの測定で、フィルタを調整してオプションの結果を得ることになります。

+0

既存のトピックサブスクリプションのルールを更新することはできますか? –

+0

新しい質問のように聞こえる;いいえ、ルールは変更できませんが、置き換えることができます。 –

+0

Azure Java SDKドキュメントへのアクセスが不明瞭なため、可能なことを理解することが難しくなっています。フィルターをカプセル化した 'SubscriptionInfo'インスタンスを取る' ServiceBusContract'の 'updateSubscription'メソッドがあることに気付きました。基本的には、既存のサブスクリプションに関連付けられているメタデータを置き換えようとしています。 –

関連する問題