MsmqSubscriptionStorage не может записывать подписчиков при использовании ServiceBroker.net в качестве транспорта NServiceBus - PullRequest
1 голос
/ 24 ноября 2011

Я использую транспортный SQL ServiceBroker для 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 Ответ

1 голос
/ 25 ноября 2011

Я нашел рабочее решение, но это вызывает больше вопросов.

Я изменил метод 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() где-то, который ведет себя не так, как при явном вызове.У кого-нибудь есть объяснение этому другому поведению?

...