我知道如何使用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循环。我也会尝试。
谢谢,约翰......但我指的用例是“生成文件创建消息”。我认为这是微不足道的(如果你知道要实现哪个接口),那么它不足以成为产品的一部分。 –