我有一个类似于以下的处理程序,它基本上响应一个命令并将一大堆命令发送到不同的队列。
public void Handle(ISomeCommand message)
{
int i=0;
while (i < 10000)
{
var command = Bus.CreateInstance<IAnotherCommand>();
command.Id = i;
Bus.Send("target.queue@d1555", command);
i++;
}
}
这个块的问题是,在循环完全完成之前,没有消息出现在目标队列或传出队列中。有人可以帮我理解这种行为吗?
此外,如果我使用任务在 Handler 中发送消息,如下所示,消息会立即出现。所以有两个问题,
- 基于任务的发送立即通过的解释是什么?
在消息处理程序中使用任务是否有任何后果?
public void Handle(ISomeCommand message) { int i=0; while (i < 10000) { System.Threading.ThreadPool.QueueUserWorkItem((args) => { var command = Bus.CreateInstance<IAnotherCommand>(); command.Id = i; Bus.Send("target.queue@d1555", command); i++; }); } }
非常感谢您的时间!