Jimmy Boagard描述了麦当劳快餐连锁店,将其与分散聚集模式进行比较 .
初步实施思路:
为所有食品站所能获得的所有类型的FoodOrdered事件建立一个共同界面,然后每个食品站将能够消费/创建其各自的项目并发布共同的完成事件.例如:薯条和汉堡站收到关于薯条顺序的消息,薯条站消耗该命令宣布该传奇正在监听的ItemDoneEvent.
最初的担忧:
由于佐贺不关心食品的完成只是一个事实,即所有的食物都完成了类型这似乎是一个确定的解决方案.然而后阅读警告这里关于队列的共享和注意到,Consumer.Conditional过滤已与MassTransit 3.0去除感觉好像框架说:"坏事(TM)会发生"这种类型的方法.但是我不知道如果不为厨房中的每个食品项目创建消息请求和响应并关联事件,您还能做到这一点.例如:FriesOrdered,BurgerOrdered FriesCooked,BurgerCooked.如果您必须为厨房中的每件物品做这件事,这将非常繁琐?
鉴于上述问题 - 这种类型的工作流程的一个好的传奇示例是什么样的?
我正在尝试使用带有chocolaty的oneget,它似乎根本不起作用.该软件包说它已安装,没有任何警告或通知.它将软件包安装在choco目录中,但不运行安装脚本,因此实际上并未安装应用程序.请注意,这是Windows 10(Powershell 5).
Get-PackageProvider –Name Chocolatey -ForceBootstrap
Set-PackageSource -Name chocolatey -Trusted
Install-package filezilla -Verbose -Force -ProviderName chocolatey
Run Code Online (Sandbox Code Playgroud)
产量
我正在尝试使用服务引用,使用任务调度程序同时发出多个请求.该服务包括一个返回结果集的同步和异步函数.我有点困惑,我有几个初步的问题,然后我将分享我在每个问题中取得的进展.我正在使用一些日志记录,并发可视化器和提琴手进行调查.最终,我想使用反应式调度程序来尽可能多地发出请求.
1)我应该使用异步函数来发出所有请求吗?
2)如果我在多个任务中使用同步函数,那么可能会使我的线程计数匮乏的有限资源是什么?
这是我到目前为止:
var myScheduler = new myScheduler();
var myFactory = new Factory(myScheduler);
var myClientProxy = new ClientProxy();
var tasks = new List<Task<Response>>();
foreach( var request in Requests )
{
var localrequest = request;
tasks.Add( myFactory.StartNew( () =>
{
// log stuff
return client.GetResponsesAsync( localTransaction.Request );
// log some more stuff
}).Unwrap() );
}
Task.WaitAll( tasks.ToArray() );
// process all the requests after they are done
Run Code Online (Sandbox Code Playgroud)
这会运行,但根据fiddler,它只是尝试立即执行所有请求.它可能是调度程序,但我相信我做的更多.
我也尝试在没有unwrap命令的情况下实现它,而是使用异步await委托,它也做同样的事情.我也试过引用.result,这似乎顺序完成.使用与调度程序/工厂的非同步服务函数调用,每个客户端同时只能同时获得大约20个并发请求.
c# ×2
async-await ×1
asynchronous ×1
chocolatey ×1
dsc ×1
masstransit ×1
nuget ×1
powershell ×1
saga ×1
wcf ×1
windows-10 ×1