Z.EventBus
1.0.1
dotnet add package Z.EventBus --version 1.0.1
NuGet\Install-Package Z.EventBus -Version 1.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Z.EventBus" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Z.EventBus --version 1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Z.EventBus, 1.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Z.EventBus as a Cake Addin #addin nuget:?package=Z.EventBus&version=1.0.1 // Install Z.EventBus as a Cake Tool #tool nuget:?package=Z.EventBus&version=1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Z.EventBus
基于.NET 平台 C# 语言 提供的Channel打造的异步事件总线库
Channel使用
使用
EventDiscriptorAttribute 特性
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] public class EventDiscriptorAttribute : Attribute { /// <summary> /// 事件名称 /// </summary> public string EventName { get; private set; } /// <summary> /// channel 容量设置 /// </summary> public int Capacity { get; private set; } /// <summary> /// 是否维持一个生产者多个消费者模型 /// </summary> public bool SigleReader { get; private set; } public EventDiscriptorAttribute(string eventName, int capacity = 1000, bool sigleReader = true) { EventName = eventName; Capacity = capacity; SigleReader = sigleReader; } }
Eto 实现特性
[EventDiscriptor("test",1000,false)] public class TestEto { public string Name { get; set; } public string Description { get; set; } }
添加通信管道
// 注入事件总线 builder.Services.AddEventBus();
注入EventBus
builder.Services.EventBusSubscribes(c => { c.Subscribe<TestDto, TestEventHandler>(); });
创建订阅队列Channle(不使用后台订阅可以不初始化)
builder.Services.BuildServiceProvider() .InitChannles();
使用了
Z.Module
模块化可以这样-
public override void ConfigureServices(ServiceConfigerContext context) { // 注入事件总线 context.Services.AddEventBus(); context.Services.EventBusSubscribes(c => { c.Subscribe<TestDto, TestEventHandler>(); }); } public override void OnInitApplication(InitApplicationContext context) { context.ServiceProvider.InitChannles(); }
-
EventHandler定义
public class TestEventHandler : IEventHandler<TestDto>, ITransientDependency
{
private Microsoft.Extensions.Logging.ILogger _logger;
public TestEventHandler(ILoggerFactory factory)
{
_logger = factory.CreateLogger<TestEventHandler>();
}
public Task HandelrAsync(TestDto eto)
{
_logger.LogInformation($"{typeof(TestDto).Name}--{eto.Name}--{eto.Description}");
return Task.CompletedTask;
}
}
添加两个测试方法
同步消费事件
-
/// <summary> /// 同步消费事件 /// </summary> /// <returns></returns> [HttpGet] public async Task EventCache() { for (var i = 0; i < 100; i++) { TestDto eto = new TestDto() { Name = "LocalEventBus" + i.ToString(), Description = "zzzz" + i.ToString(), }; await _localEvent.PushAsync(eto); } Log.Warning("我什么时候开始得"); }
-
队列消费事件
-
/// <summary> /// 后台消费事件 /// </summary> /// <returns></returns> [HttpGet] public async Task EventChnnalCache() { for (var i = 0; i < 100; i++) { TestDto eto = new TestDto() { Name = "LocalEventBus" + i.ToString(), Description = "zzzz" + i.ToString(), }; await _localEvent.EnqueueAsync(eto); } Log.Warning("我什么时候开始得"); }
-
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Z.EventBus:
Package | Downloads |
---|---|
Z.Fantasy.Core
Core包 |
GitHub repositories
This package is not used by any popular GitHub repositories.