我正在使用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.
答案 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()
的隐式调用,其行为与我明确调用它时的行为方式不同。有没有人对这种不同的行为有解释?