【ITニュース解説】Fluent Brighter: Como configurar o Postgres
2025年09月05日に「Dev.to」が公開したITニュース「Fluent Brighter: Como configurar o Postgres」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
Fluent BrighterでPostgresを設定する方法を解説。メッセージングのOutbox、Inbox、Gateway機能を実装する。NuGetで必要なパッケージを導入し、DIコンテナにサービスを登録。AddPostgresSubscriptionで受信設定、AddPostgresPublicationで送信設定を行う。UsePostgresOutboxとUsePostgresInboxでOutbox/Inboxを構成。UsingPostgresで接続設定を統一的に管理できる。
ITニュース解説
この記事では、.NETアプリケーションでFluent Brighterというライブラリを使って、Postgresデータベースをメッセージング機能(Outbox、Inbox、メッセージゲートウェイ)のために設定する方法を解説する。特に、システムエンジニアを目指す初心者が理解しやすいように、基本的な概念から具体的な設定手順までを丁寧に説明する。
まず、Fluent Brighterを使う上で必要な前提条件として、.NET 8+またはnetstandard2.0が必要となる。また、必要なNuGetパッケージとして、Postgresとの連携に必要なFluent.Brighter.Postgresと、バックグラウンドタスクとしてService Activatorを統合するためのParamore.Brighter.ServiceActivator.Extensions.Hostingをインストールする必要がある。
次に、Fluent Brighterの基本的な概念を確認する。Fluent Brighterでは、メッセージは「リクエスト」として定義される。リクエストには、コマンドとイベントの2種類がある。コマンドは、特定の受信者に向けて送信されるメッセージであり、例えばProcessOrderCommandのように、具体的な処理の指示を表す。一方、イベントは、複数の受信者にブロードキャストされるメッセージであり、例えばOrderPlacedEventのように、何らかの事象の発生を通知する。リクエストは、IRequestインターフェースを実装することで定義できる。
オプションとして、メッセージマッパーを使用することもできる。メッセージマッパーは、Brighterのメッセージとアプリケーションのオブジェクトとの間で変換を行う役割を担う。通常、JSONシリアライゼーションがデフォルトで使用されるが、カスタムのマッパーを実装することで、より複雑な変換に対応できる。メッセージマッパーは、IAmAMessageMapper<T>インターフェースを実装することで定義する。
メッセージの実際の処理は、リクエストハンドラが行う。リクエストハンドラは、受信したメッセージに基づいて具体的な処理を実行する。例えば、OrderPlacedHandlerは、OrderPlacedイベントを受信し、ログに注文情報を記録するなどの処理を行う。リクエストハンドラは、RequestHandler<T>クラスを継承することで定義する。
ここから、PostgresをFluent Brighterで使用するための具体的な設定手順を説明する。まず、DIコンテナにFluent Brighterのサービスを登録する必要がある。これは、services.AddFluentBrighter()メソッドを使用して行う。
次に、Postgresのサブスクリプション(メッセージの受信設定)を登録する。これは、AddPostgresSubscriptionメソッドを使用して行う。このメソッドでは、キュー名やメッセージポンプの種類などを設定することができる。
同様に、Postgresのパブリケーション(メッセージの送信設定)を登録する。これは、AddPostgresPublicationメソッドを使用して行う。このメソッドでは、接続設定や、送信するメッセージの種類とキュー名などを設定することができる。
Outboxは、メッセージを送信する際に、まずデータベースにメッセージを一時的に保存し、その後、別のプロセスでメッセージを実際に送信するパターンを実装するための機能である。PostgresでOutboxを使用するには、UsePostgresOutboxメソッドを使用する。このメソッドでは、データベース接続設定などを指定する。また、Outboxに溜まったメッセージを定期的に送信するためのスイーパー(UseOutboxSweeper)と、データベーストランザクションを使用したOutboxアーカイブ(UseDbTransactionOutboxArchive)も合わせて設定する必要がある。
Inboxは、メッセージを受信する際に、メッセージが重複して処理されることを防ぐための機能である。PostgresでInboxを使用するには、UsePostgresInboxメソッドを使用する。このメソッドでは、データベース接続設定などを指定する。
最後に、UsingPostgresメソッドを使用することで、Postgresの接続設定を一度にまとめて設定することができる。このメソッドを使用すると、Outbox、Inbox、パブリケーション、サブスクリプションの設定を、共通の接続設定に基づいて行うことができるため、設定が簡素化される。例えば、接続文字列、Outboxテーブル名、パブリケーションのキュー名、サブスクリプションのキュー名などを、UsingPostgresメソッドの中でまとめて設定することができる。
この記事では、Fluent Brighterを使用してPostgresをメッセージング機能のために設定する方法を、基本的な概念から具体的な手順まで解説した。UsingPostgresメソッドを使用することで、設定を簡素化できることを示した。詳細な実装例は、GitHubで公開されている。