使用ServiceBroker.net作为NServiceBus传输时,MsmqSubscriptionStorage无法记录订阅者

时间:2011-11-24 01:12:50

标签: nservicebus service-broker

我正在使用SQL ServiceBroker transport for NServiceBus挂钩第三方CRM。

上面的链接描述了模式,我提供的解决方案和示例解决方案都遇到了同样的问题。

使用Configure.With().StructureMapBuilder().XmlSerializer().MsmqSubscriptionStorage().MsmqTransport().IsTransactional(true).PurgeOnStartup(false);时,NServiceBus主机运行正常,但是如果我手动创建订阅队列,则不会创建订阅队列,并且订户不会存储在队列中。

我不确定如何进步,并且非常感激。

来自发布者的调试日志,摘要为:

2011-11-25 10:27:04,712 [1] DEBUG NServiceBus.Serializers.XML [(null)] <(null)> - Initializing type: NServiceBus.Unicast.Transport.SubscriptionMessage, NServiceBus.Core, Version=2.6.0.1505, Culture=neutral, PublicKeyToken=9fc386479f8a226c
2011-11-25 10:27:04,837 [1] DEBUG NServiceBus.Unicast.UnicastBus [(null)] <(null)> - Message NServiceBus.Unicast.Transport.SubscriptionMessage has been allocated to endpoint .
2011-11-25 10:32:15,603 [Worker.5] INFO  NServiceBus.Unicast.UnicastBus [(null)] <(null)> - Subscribing Registration.IndividualHandler.InputQueue@COMPUTER to message type Messages.IIndividualUpdated, Messages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
2011-11-25 10:47:55,493 [Worker.5] DEBUG NServiceBus.Unicast.UnicastBus [(null)] <(null)> - Sending message Messages.__Impl.IIndividualUpdated, NServiceBus.Grid.Messages.__Impl, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null with ID c2267496-5f7e-4b3d-a1c4-69a7e68982a1\6367966 to destination Registration.IndividualHandler.InputQueue@COMPUTER.    

1 个答案:

答案 0 :(得分:1)

我找到了一个有效的解决方案,但这会引发更多问题。

我已经改变了Init方法:

Configure.With()
    .StructureMapBuilder()
    .XmlSerializer()
    .MsmqSubscriptionStorage()
    .MsmqTransport()
            .IsTransactional(true)
            .PurgeOnStartup(false);

为:

Configure.With()
    .StructureMapBuilder()
    .XmlSerializer()
    .MsmqSubscriptionStorage()
    .MsmqTransport()
            .IsTransactional(true)
            .PurgeOnStartup(false)
    .UnicastBus()
    .LoadMessageHandlers()
    .CreateBus()
    .Start();

现在我获得了订阅持久性。

某处必须有一些对.Start()的隐式调用,其行为与我明确调用它时的行为方式不同。有没有人对这种不同的行为有解释?