2011-09-05 45 views
1

我试图找到一种方法来支持从相同的安装目录(但作为单独的进程运行)的nServiceBus的多个配置。现在人们怎么做呢?nServiceBus的多个配置文件 - 相同的目录

我知道:

  • 程序可以用
NServiceBus.Configure 
    .With() 
    ... 
    .MsmqTransport() 
    .Configurer.ConfigureComponent<MsmqTransport> 
    (NServiceBus.ObjectBuilder.ComponentCallModelEnum.None) 
     .ConfigureProperty(x => x.InputQueue, "DynamicInputQueue1") 
     .ConfigureProperty(x => x.ErrorQueue, "DynamicErrorQueue1"); 
  • 更改参数,您可以通过安装多个服务的 “实例”:

NServiceBus.Host.exe /安装/服务名:XYZ /例如:ABC

,但我想这两个这样的实例名称的影响该配置路径,我们需要结合起来。所以我想它归结为这 - 我如何获取实例名称?或者有没有其他的路线我可以采取这一点,而不诉诸多个单独的安装目录和每个实例的app.configs?

感谢

回答

1

我认为从维护的角度来看,你可能需要不同的目录,使之简单为您管理的乡亲,但如果你想有一个单独的目录,你也许可以使用下列方法之一。

您可能需要考虑实施自定义配置文件。配置文件名称在命令行中提供,并允许您根据配置文件调整设置。 OOTB NSB有3个配置文件,Lite,Integration和Production,它们根据环境更改设置。您可以创建自己的并使用配置文件提供不同的设置。只需实现IProfile,然后在命令行上提供它。

另一种选择可能是实现IConfigurationSource并从您决定的位置提取数据。这可能是多个文件,一个数据库或其他东西。

最后,您可以将您的配置放入不同的程序集中,并利用NSB容器在上面的引导程序代码中使用.With(您的程序集列表包含正确的配置程序集)加载适当的配置。这可能可以通过实施IWantToRunAtStartup来完成,但请检查以确保在服务的生命周期中正确调整了配置。

+0

很好,谢谢亚当 - 我正在使用一些代码,使我能够获取完整的服务名称(因此实例名称),但它看起来像配置文件可能是一个更好的选择。 –

相关问题