Projects

CodeWF.EventBus.Socket

TCP Socketベースの軽量プロセス間イベントバス

项目说明

CodeWF.EventBus.Socket

CodeWF.EventBus.Socket

CodeWF.EventBus.Socket 是一个面向 C# 进程间通信的轻量级 TCP 事件总线库。它基于 Socket 提供发布订阅与 Query 式请求响应能力,让本地多进程或轻量服务之间可以通信,而不必先引入 RabbitMQ、Kafka、Redis 等外部 MQ 基础设施。

プロパティ

  • 基于 CodeWF.NetWrapper 的 TCP Socket 传输。
  • Publish/Subscribeクロスプロセスイベント通知のサポート。
  • 同じトピックでのクエリ/レスポンス操作のサポート。
  • 查询请求按 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);

境界線の利用

このライブラリは、軽量イベント配布、ネイティブマルチプロセス通信、小規模なサービス間通知に適している。現在のメッセージはメモリにのみ保存され、プロセス再起動後の永続性、再試行キュー、配信保証は提供されません。本番環境で使用する場合は、認証、暗号化、監視、制限、再試行ポリシーをビジネスニーズに応じて補完する必要があります。

倉庫の倉庫