Service Fabric Processor のパブリック プレビュー提供開始
執筆者: James Birdsall (Software Engineer II, Microsoft Azure)
このポストは、2019 年 3 月 4 日に投稿された Service Fabric Processor in public preview の翻訳です。
マイクロソフトの Azure Event Hubs クライアントは、 2 つのレベルで抽象化されていました。1 つは低レベルのクライアントで、イベント送信クラスとイベント受信クラスがあります。これらはアプリケーション側で自由に制御できますが、Event Hubs の設定をアプリケーション側で理解し、常にそれぞれのパーティションに接続している必要があります。この上位のクライアントが高レベルのライブラリ、Event Processor Host です。このライブラリでは、受信側には詳細情報を渡しません。Event Processor Host は複数のホスト インスタンス間で自動的に Event Hubs パーティションの所有権を分配し、指定の処理にイベントを送信します。
Service Fabric は、マイクロソフト提供のもう1 つのライブラリです。アプリケーションを断片的に分割し、複数のノード間で分散させる、汎用のフレームワークです。多くのお客様がアプリケーションに Service Fabric を使っていますが、その中には Event Hubs からイベントを受信するものがあります。Service Fabric のアプリケーション内で Event Processor Host を使うこともできますが、エレガントとはいえず、冗長になります。この組み合わせは、ノード間での負荷分散が 2 つの階層で別々に実行され、お互いに認識されません。また、Event Processor Host のインスタンスのパーティションの所有権を Azure Storage によって調整するため、Azure Storage に負荷がかかります。
Service Fabric Processor は、Service Fabricと統合された新しいイベント処理ライブラリです。パーティション管理や信頼性の高いストレージ、より高度な負荷分散処理を Service Fabric の機能で行います。また、Event Processor Host でおなじみのシンプルなインターフェイスでプラグラミングできます。Service Fabric Processor の唯一の要件として、 Service Fabric アプリケーションが使う Event Hubs と同数のパーティションが必要です。これによって Event Hubs のパーティションからアプリケーションのパーティションに 1 on 1 でマッピングし、Service Fabric を効率的にロードすることができます。
Service Fabric Processor は現在プレビュー段階で、NuGet のMicrosoft.Azure.EventHubs.ServiceFabricProcessor (英語) ページで公開されています。ソース コードは GitHub の .NET Event Hubs クライアント リポジトリ (英語) で公開されています。また、サンプル アプリケーション (英語) も GitHub でご覧いただけます。
デベロッパーにとって、Service Fabric Processor でのアプリケーション作成には主に二段階の手順があります。まず、IEventProcessor インターフェイスを実装するクラスを作ります。パーティションの処理開始時に呼び出すメソッド (OpenAsync)、処理終了時に呼び出すメソッド (CloseAsync)、エラー発生時の通知処理メソッド (ProcessErrorAsync)、受信したイベントを処理するメソッド (ProcessEventsAsync) を指定します。最後のメソッドが、ほとんどのアプリケーションの中核、ビジネス ロジック実行部分です。
次に、アプリケーションの機能を実行する RunAsync メソッドにコードを追加して、Service Fabric と統合します。基本的な手順は、次のとおりです。
- EventProcessorOptions のインスタンスを作成し、必要なオプションを設定する。
- IEventProcessor を実装するインスタンスを作成する。このインスタンスは、このパーティションのイベント処理に使われる。
- ServiceFabricProcessor のインスタンスを作成し、オプションとプロセッサ オブジェクトをコンストラクターに渡す。
- ServiceFabricProcessor インスタンスで RunAsync を呼び出し、イベントの処理を開始する。
次のステップ
詳細については、GitHub で公開しているプログラミング ガイド (英語) をご覧ください。この記事の内容はいかがでしたか? ご意見やフィードバックがありましたら、お気軽に(元の記事の)コメント欄までお寄せください。Event Hubs の詳細については、Event Hubs 製品ページをご覧ください。