我正在使用一个 ASP.NET Web 项目,该项目提供一个带有按钮的视图,这些按钮触发消息通过 MSMQ 发送到 Rebus。消息处理程序是长时间运行的操作(15-30 分钟),我希望 rebus 命令处理程序在处理消息期间向 Web 发送更新。
public void Handle(ImportProducts message)
{
_bus.Send(new CommandStatusReply("Starting up import products job..."));
// One operation that takes about a minute
_bus.Send(new CommandStatusReply("Step one completed. processing..."));
// Another operation that takes a while
...
}
在我的 Web 应用程序中,我有一个 CommandStatusReply 处理程序,它将通过 SignalR 将状态消息推送到客户端。一切正常,除了在处理 ImportProducts 消息时“批量”发送所有 CommandStatusReply 消息。我希望他们立即发送。这可能吗?在那种情况下,我错过了什么?
我尝试过 Bus.Send()、Bus.Reply() 和 Bus.Publish(),还尝试将 Bus.Reply/Send 包装在 TransactionScope(TransactionScopeOptions.Suppress) 中,但无济于事。