CodeWF.EventBus.Socket
CodeWF.EventBus.Socket は、C# プロセス間通信のための軽量 TCP イベントバスライブラリです。Socket をベースに、Publish/Subscribe と Query 型のリクエスト/レスポンス機能を提供し、ローカルのマルチプロセスや軽量サービス間で通信できるようにします。RabbitMQ、Kafka、Redis などの外部 MQ インフラを事前に導入する必要はありません。
特徴
CodeWF.NetWrapperを利用した TCP Socket 転送。- Publish/Subscribe によるプロセス間イベント通知をサポート。
- 同一トピックでの Query/Response インタラクションをサポート。
- クエリ要求は
TaskIdで関連付けられ、同一トピックでの並行クエリに対応。 - サードパーティの MQ に依存せず、軽量なイベント配信や IPC シナリオに最適。
- サンプルプロジェクト
src/EventBusDemoを同梱。
インストール
Install-Package CodeWF.EventBus.Socket
.NET CLI を使用する場合:
dotnet add package CodeWF.EventBus.Socket
クイックスタート
サーバーを起動:
using CodeWF.EventBus.Socket;
IEventServer eventServer = new EventServer();
await eventServer.StartAsync("127.0.0.1", 9100);
クライアントに接続:
using CodeWF.EventBus.Socket;
IEventClient eventClient = new EventClient();
await eventClient.ConnectAsync("127.0.0.1", 9100);
イベントを購読してパブリッシュ:
eventClient.Subscribe<NewEmailCommand>("event.email.new", command =>
{
Console.WriteLine($"メールの件名を受信: {command.Subject}");
});
eventClient.Publish("event.email.new", new NewEmailCommand
{
Subject = "ご利用ありがとうございます",
Content = "アカウントの準備が完了しました",
SendTime = DateTime.Now
}, out _);
Query/Response:
eventClient.Subscribe<EmailQuery>("event.email.query", query =>
{
var response = new EmailQueryResponse
{
Emails = EmailManager.QueryEmail(query.Subject)
};
eventClient.Publish("event.email.query", response, out _);
});
var result = await eventClient.QueryAsync<EmailQuery, EmailQueryResponse>(
"event.email.query",
new EmailQuery { Subject = "アカウント" },
3000);
使用上の注意
このライブラリは、軽量なイベント配信、同一マシン上のプロセス間通信、小規模サービス間の通知に適しています。現在のメッセージはメモリ上にのみ保持され、永続化、再試行キュー、プロセス再起動後の配信保証は提供されません。本番環境で使用する場合は、必要に応じて認証、暗号化、監視、レート制限、再試行戦略を追加してください。