Stone
Stone
经过几个月考虑,目前找到了一种比较好的解决办法,把“连接复用”功能,从网络层提升到RPC(ApiServer)层,因为目前只有RPC在使用。 代码如下,可以试用! https://github.com/NewLifeX/X/commit/530e87f779fbac29a80c1b1d86eba9aebbbb5f24
是的,设计上Handler生产的消息只能属于当前应用。 请问你是在什么场景下需要跨应用消费?我们可以评估一下跨应用发布消费的方案
这个问题源自于魔方,为了增加Cron定时任务,JobService要求注入ITracer,而普通web应用使用魔方后并没有注入ITracer,导致启动报错。这个问题已经修正,今晚发布魔方正式版。
网络问题,代码实在推不上去
1,handler 支持 ObjectContainer形式的构造函数注入 // 实例化调度器 var sc = new Scheduler { Tracer = _tracer, // 使用分布式调度引擎替换默认的本地文件调度 Provider = new NetworkJobProvider { Server = set.Server, AppID = set.AppID, Secret = set.Secret,...
> _handler_ 的 _execute_ 方法感觉是不是有异步的必要 > 一个是多次执行,再一个是现在netcore 推荐异步 注入的服务都是异步在里头调用的时候就不大好集成了 这个目前还没打算支持异步,蚂蚁调度的分布式处理能力非常强劲,足以“摧毁”(读写)任意数据库。它的瓶颈在于外部io,本地是否异步没有什么区别。
> > handler 支持 ObjectContainer形式的构造函数注入 > > 不好意思 ,请问一下,这个 _ObjectContainer_ 形式是怎么理解的 这是 newlife.core 内置的对象容器,支持DI。 var services = ObjectContainer.Current; services.AddSingleton(MemoryCache.Default); var provider = ObjectContainer.Provider; var handler = provider.GetService(); 这样子得到的 BuildMobile 实例,可通过构造函数注入...
IObjectContainer是轻量级对象容器,仅用于NewLife组件内部使用。 所以,默认它没有注册ILogger等类型
IObjectContainer的确无法支持泛型ILogger,它只是一个轻量级对象容器,用于NewLife生态各个项目之间解耦。 并且,IObjectContainer也不支持Scope,局限性还是比较大。 你研究的替换提供者的方向挺好,但是用的人比较少,毕竟微软的DI还是很了不起的。 建议区分对待,如果是简单项目,直接用IObjectContainer,不用引入aspnetcore,参考零代的例子项目: https://github.com/NewLifeX/NewLife.Zero 如果是复杂项目,使用aspnetcore,自己解决参数传入作业
右键,以管理员运行