Skip to content

pangsen/EasyWorker

Repository files navigation

EasyWorker

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

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages