【问题标题】:IoC, Containers, and NServiceBus confusionIoC、容器和 NServiceBus 混淆
【发布时间】:2011-02-21 04:05:54
【问题描述】:

这是我的设置

  • 温莎城堡是我的容器
  • NServiceBus 本身在内部使用自己的容器,默认为 Spring
  • 我正在实施 PubSub 配置。

好的,如果我的 Bus.Publish 发生在 IWantToRunAtStartup 类中,那么一切都很好。作为对 Run() 的测试,我们可以启动一个计时器,它会进入一个服务风格的循环。

但是,如果我想从我的应用中抽象出 NServiceBus 并让我的应用运行:

new CustomPulisherClass().Notify(ISomeMessage msg);

在这种情况下,我该如何实现CustomPublisherClass。

我的困惑来自 NServiceBus 已经作为服务运行,它已经“启动”了。如何获取 Bus 对象的正确实例?

【问题讨论】:

    标签: design-patterns ioc-container nservicebus


    【解决方案1】:

    您应该将 NServiceBus 配置为使用 Windsor 作为内部容器:

    http://sourceforge.net/apps/mediawiki/nservicebus/index.php?title=Additional_containers

    如果您这样做,正确的 IBus 将在您的 Windsor 实例中可用

    【讨论】:

    • 你是什么意思?我只需要获取容器的当前实例,然后使用 .Resolve()?无需在我的 windsor.config 中配置 IBus?
    • 另外,安德烈亚斯,当 NServiceBus 在单独的进程下运行时,这将如何工作......即服务?可以吗?
    • 是的,使用 .Resolve 总线将可用。在另一个问题上不关注您 q:您始终使用与您自己的代码在同一进程中运行的总线实例进行通信。例如。如果你有一个 webb 应用程序向 NSB 通用主机中托管的后端服务发送命令,你也可以在你的 web 应用程序中配置 NSB 并执行 bus.Send(new WhatMessage()) 简而言之:NSB 始终在与你的代码与总线交互有帮助吗?
    • 是的,完美,谢谢安德烈亚斯。我想我有点困惑,但我只是想从别人那里得到一些确认。好东西!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多