【问题标题】:How do I update to StructureMap 3.x while staying on NServiceBus 4.x?如何在 NServiceBus 4.x 上更新到 StructureMap 3.x?
【发布时间】:2015-03-04 16:56:40
【问题描述】:

我想在我的 MVC 项目上升级到 StructureMap 3.x,但我被困在 NServiceBus 4.x 上,因为 5.x 许可条款对我们有限的使用没有意义。 MVC 项目是只发送的。

如何在保留 NSB 4.x 的同时升级 StructureMap?

【问题讨论】:

    标签: c# dependency-injection nservicebus structuremap nservicebus4


    【解决方案1】:

    我在邮件列表here 上问了同样的问题。当时的答案是不支持这种配置,AFAIK 没有改变。

    我建议您发送一封电子邮件至 Particular,看看您是否可以解决有关许可的问题,如果这对您的项目来说很重要。

    【讨论】:

    • 因为端点是只发送的,所以我认为有办法解决它。我不需要调用处理程序。
    • 在这种情况下,只需将内部容器保持原样,然后将 IBus 注册到您自己的 SM 容器中?
    【解决方案2】:

    而不是这个:

    Configure
        .With()
        .StructureMapBuilder(ObjectFactory.Container)
    

    使用默认容器:

    Configure
        .With()
        .DefaultBuilder()
    

    因为您不再将 ObjectFactory.Container 传递给 NServiceBus,所以您需要告诉 StructureMap 如何实现 IBus 作为依赖项,例如你的 MVC 控制器:

    x.For<NServiceBus.IBus>()
        .Use(() => Configure
            .Instance
            .CreateBus()
            .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install())
        );
    

    如果您有 NServiceBus 需要创建的东西,例如实现 IMutateOutgoingMessages 并且您的消息修改器具有依赖关系的东西,那么您必须告诉 NServiceBus 如何解决这些依赖关系:

    Configure
        .Instance
        .Configurer
        .ConfigureComponent(
            () => new MessageMutator(new MessageMutatorDependency()),
            DependencyLifecycle.InstancePerCall
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      相关资源
      最近更新 更多