我正在调查 NServiceBus,但我不确定如何(甚至是否)可以使用它来处理这种情况:
我有多个客户发送工作请求,分销商将这些请求分发给工人。这项工作需要很长时间才能完成,我希望工作人员将进度报告给发送原始请求的客户。
我查看了全双工示例以及如何将分配器添加到该示例。我已经完成了这些工作,但是当我修改它们以回复一系列进度消息时(消息之间存在延迟,如下所示),客户端会同时收到所有进度消息。
public class RequestDataMessageHandler : IHandleMessages<RequestDataMessage>
{
public IBus Bus { get; set; }
public void Handle(RequestDataMessage message)
{
for (var i = 0; i < 10; i++)
{
var count = i;
var response = this.Bus.CreateInstance<DataResponseMessage>(m =>
{
m.DataId = message.DataId;
m.Progress = count * 10;
});
this.Bus.Reply(response);
Thread.Sleep(1000);
}
}
}
我怀疑我对 NServiceBus 的工作原理还不太了解。有人可以解释我哪里出错了,或者指出一些例子和/或文档吗?