私は、サーバー上で処理するために、クライアント上で非常にタイトなループで何千ものメッセージを生成する可能性のあるアプリケーションに取り組んでいます。イベントの連鎖は次のようなものです:メッセージキューとサービスバスのメッセージ細分性
- クライアントはアイテムを処理し、ローカルキューに配置します。
- ローカルキュー処理はメッセージを取得してWebサービスを呼び出します。
- Webサービスは、サーバー上のサービスバスにメッセージを作成します。
- サービスバスはメッセージをデータベースに処理します。
Webサービスのクライアントが多数存在するため、すべての通信が非同期であるという考えがあります。私はMSMQがこれを直接行うことができることを知っていますが、セキュリティなどのようなものを設定するためにクライアントにそのような管理機能を常に持っているわけではありません。
私の質問は各段階でのメッセージの細分性についてです。最も簡単な方法は、クライアント上で処理される各アイテムが1つのクライアントメッセージ/ Webサービスコール/サービスバスメッセージを生成することを意味します。大丈夫ですが、大規模なWebサービスDTOとデータベースの短期間のトランザクションとの間にトレードオフがある点を除いて、可能な場合はWebサービスコールをバッチ処理するほうがよいとわかっています。この特定のシナリオでは、すべてのアイテムまたはすべてのアイテムが処理される「ビジネストランザクション」は必要ありません。メッセージサイズとWebサービスコールの数とデータベーストランザクションの最適なバランスを達成するために探しています。
アドバイスはありますか?
×2 - スーパー答え! – mwjackson