EasyWorker可以在多线程条件下帮助你分发和处理消息。
基本用法如下
var worker = WorkerOption
.New
.EnableInterceptor()
.SetMaxTaskCount(maxThreadCount)
.SetDelaySecondsWhenNoMessageCome(5)
.CreateWorker();
worker.AddHandler(new IntMessageHandler());
worker.AddHandler(new StringMessageHandler());
worker.AddHandler(new SecondStringMessageHandler());
worker.Start();
worker.Publish(Enumerable.Range(1, 1000).Select(a => new StringMessage { Message = $"String Message:{a}" }));
worker.Publish(Enumerable.Range(1, 1000).Select(a => new IntMessage { Message = a }));
worker.WaitUntilNoMessage();
worker.Stop();
自定义消息 所有消息必须实现 IMessage 接口
public class SiteProfile:IMessgae
{
public string SiteAddress { get; set; }
}
自定义消息处理 所有消息处理函数必须实现泛型接口IHandler<>
public class SiteHandler : IHander<SiteProfile>
{
public void Handle(SiteProfile message)
{
throw new NotImplementedException();
}
}
注册Handler
worker.AddHandler(new SiteHandler());
Publish Message
//单个
worker.Publish( new SiteProfile()));
//批量
worker.Publish( new List<SiteProfile>());
等待已经Publish的消息处理完成
worker.WaitUntilNoMessage();
EnableIntercepto
SetMaxTaskCount
SetDelaySecondsWhenNoMessageCome