我正在使用一個ASP.NET web項目,該項目提供按鈕觸發通過MSMQ向Rebus發送消息的視圖。消息處理程序是長時間運行的操作(15-30分鐘),我希望rebus命令處理程序在處理消息期間向Web發送更新。在ReBus的消息處理期間立即執行的回覆
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(),並試圖在TransactionScope(TransactionScopeOptions.Suppress)中包裝Bus.Reply /發送無濟於事。
我的天真嘗試會有另一個巴士的實例,但我想這是個壞主意。從Mookid聽到爲什麼它很糟糕/好主意會很有趣:) – user1121956
謝謝 - 明天我會試一試! –