我知道如何使用FileSystemWatcher
類,並且我知道如何發送我想發送的消息。我想不出的是在哪裏初始化FileSystemWatcher
。如何在創建文件時發送NServiceBus消息?
我假設有一些地方初始化Endpoint
我可以設置這個,但我不確定那會是。
似乎是這樣一個常見的用例;我有點驚訝,Udi沒有把它建成NServiceBus!
我知道如何使用FileSystemWatcher
類,並且我知道如何發送我想發送的消息。我想不出的是在哪裏初始化FileSystemWatcher
。如何在創建文件時發送NServiceBus消息?
我假設有一些地方初始化Endpoint
我可以設置這個,但我不確定那會是。
似乎是這樣一個常見的用例;我有點驚訝,Udi沒有把它建成NServiceBus!
是的內置於NServiceBus。
您需要實現一個派生自IWantToRunWhenBusStartsAndStops
的類。
有關更多信息,請參閱http://docs.particular.net/nservicebus/the-nservicebus-host#custom-initialization-and-startup。
我要去嘗試以下告訴你,如果它的工作:
一個創建FileWatcher類。靜態布爾變量'keepChecking'
b。一個靜態方法watchFiles()啓動FileSystemWatcher,然後通過一個循環來保持活動狀態,該循環測試keepChecking
b。的的OnChange等FileSystemWatcher的事件處理程序 - 這在由FileSystemWatcher的觸發,可能發出NServiceBus事件
要啓動監視器(在我的NSB主持節目)你運行WatchFiles()方法在從IWantToRunWhenBusStartsAndStops繼承的初學者類中的單獨線程中。
要停止觀察者,首先將watcher.EnableRaisingEvents設置爲false,然後將keepWatching設置爲false,以便循環結束。
在此的StackOverflow問題與代碼類似的方法:從泰勒日 NServicebus with File System Watcher。
除了他將starter類與filewatcher類及其在同一線程中運行的(非靜態)創建方法統一在一起。有趣的是,它不需要Keepalive循環,因爲FileSystemWatcher事件訂閱被定義爲靜態的。
他被告知,這不是最好的方式去,並給出了兩個建議:a。使用「衛星級」或b。將整個事物移動到一個單獨的類中,使fileWatcher本身爲靜態。沒有提到Keepalive循環。我也會嘗試。
謝謝,約翰......但我指的用例是「生成文件創建消息」。我認爲這是微不足道的(如果你知道要實現哪個接口),那麼它不足以成爲產品的一部分。 –