如何在创建文件时发送NServiceBus消息?

时间:2014-05-22 21:06:21

标签: nservicebus filesystemwatcher

我知道如何使用FileSystemWatcher类,我知道如何发送我想发送的消息。我无法弄清楚的是在哪里初始化FileSystemWatcher

我假设有一些地方可以初始化Endpoint我可以设置它,但我不确定它会在哪里。

这似乎是一个常见的用例;我有点意外的是,Udi没有把它建成NServiceBus!

2 个答案:

答案 0 :(得分:2)

是的,内置于​​NServiceBus。

您需要实现一个派生自IWantToRunWhenBusStartsAndStops的类 有关详细信息,请参阅http://docs.particular.net/nservicebus/the-nservicebus-host#custom-initialization-and-startup

答案 1 :(得分:0)

我将尝试以下操作并告诉您它是否有效:

  1. 使用
  2. 创建FileWatcher类

    一个。静态布尔变量' keepChecking'

    湾一个静态方法watchFiles(),它启动FileSystemWatcher,然后通过测试keepChecking的循环保持活动

    湾OnChange等FileSystemWatcher事件处理程序 - 在被FileSystemWatcher触发时,可能会发出NServiceBus事件

    1. 启动观察程序(在我的NSB主机程序中)您在一个继承自IWantToRunWhenBusStartsAndStops的入门类中的单独线程中运行WatchFiles()方法。

    2. 要停止观察者,首先将watcher.EnableRaisingEvents设置为false,然后将keepWatching设置为false,以便循环结束。

    3. 此StackOverflow问题中的类似方法包含代码: 来自泰勒日的NServicebus with File System Watcher

      除了他将starter类与filewatcher类以及在同一线程中运行的(非静态)创建方法统一起来。有趣的是,它可以在不需要keepalive循环的情况下工作,因为FileSystemWatcher事件订阅被定义为静态。

      他被告知这不是最佳方式,并给出了两个建议:a。使用"卫星类"或b。要将整个事物移动到单独的类,使fileWatcher本身是静态的。没有提到keepalive循环。我也会尝试一下。