При попытке использовать хранилище MsmqSubscription возникла исключительная ситуация - PullRequest
1 голос
/ 16 ноября 2010

Я новичок в шине NService и пытаюсь создать шину, используя хранилище MSMQSubscribetion, но получаю следующую ошибку.

Исключительная ситуация при запуске конечной точки, ошибка была зарегистрирована.Причина: ошибка создания объекта с именем «NServiceBus.Unicast.Subscription.Msmq.MsmqSubscriptionStorage»: ошибка установки значений свойств: PropertyAccessExceptionsException (1 ошибка);Вложенные исключения PropertyAccessException: [Spring.Core.TypeMismatchException: невозможно преобразовать значение свойства типа [System.String] в требуемый тип [System.String] для свойства 'Queue'., Внутреннее исключение: System.ArgumentException: существует проблема сочередь хранения подписки.Смотрите прилагаемое исключение для деталей.---> System.Messaging.MessageQueueException: имя формата неверно.в System.Messaging.MessageQueue.MQCacheableInfo.get_Transactional () в System.Messaging.MessageQueue.get_Transactional () в NServiceBus.Unicast.Subscription.Msmq.src \ impl \ unicast \ NServiceBus.Unicast.Subscription.Msmq \ MsmqSubscriptionStorage.cs: строка 184 --- Конец трассировки стека внутренней исключительной ситуации --- в NServiceBus.Unicast.Subscription.Msmq.MsmqSubscriptionStorage.set_Queue в строке значения: \ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ impl \ unicast \ NServiceBus.Unicast.Subscription.Msmq \ MsmqSubscriptionStorage.cs: строка 188 в (Object, Object, Object []) в Spring.Reflection.Dynamic.SafeProty(Цель объекта, Значение объекта) в l: \ projects \ spring-net \ trunk \ src \ Spring \ Spring.Core \ Reflection \ Dynamic \ DynamicProperty.cs: строка 204 в Spring.Expressions.PropertyOrFieldNode.PropertyValueAccessor.Set (Контекст объекта, Значение объекта) в l: \ projects \ spring-net \ trunk \ src \ Spring \ Spring.Core \ Expressions \ PropertyOrFieldNode.cs: строка 585 для Spring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValueInternal (контекст объекта, объект newValue) в l: \ projects \ spring-net \ trunk \ src \ Spring \ Spring.Core \ Expressions \ PropertyOrFieldNode.cs: строка 406 atSpring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValue (Контекст объекта, EvaluationContext evalContext, Объект newValue) в l: \ projects \ spring-net \ trunk \ src \ Spring \ Spring.Core \ Expressions \ PropertyOrFieldNode.cs: строка 348]

Это мой раздел конфигурации.

<configuration>
      <configSections>
      <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig,NServiceBus.Core"/>
      <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig,NServiceBus.Core"/>
      <section name="MsmqSubscriptionStorageConfig"
              type="NServiceBus.Config.MsmqSubscriptionStorageConfig,NServiceBus.Core" />
      </configSections>

      <MsmqTransportConfig InputQueue="MyResponseQueue" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>

      <UnicastBusConfig>
        <MessageEndpointMappings>
          <add Messages="MyMessages.Message1" Endpoint="PubQueue"/>
        </MessageEndpointMappings>
      </UnicastBusConfig>
    </configuration> 

Так я пытался создать шину

    NServiceBus.Configure.With()
        .DefaultBuilder()
        .Log4Net()
        .MsmqSubscriptionStorage()
        .XmlSerializer()
        .MsmqTransport()
        .IsTransactional(true)
        .UnicastBus()
        .CreateBus();

Может кто-нибудь объяснить, что для меня пошло не так?Любая помощь будет высоко ценится.

Спасибо Алекс.

Ответы [ 2 ]

5 голосов
/ 16 ноября 2010

Похоже, вам не хватает самого раздела MsmqSubscriptionStorageConfig. Это необходимо и будет указывать на вашу очередь подписки.

<MsmqSubscriptionStorageConfig Queue="queueName" />
1 голос
/ 12 ноября 2011

NServiceBus будет автоматически использовать очередь с именем «NServiceBus_Subscription», если она не определена в файле конфигурации.Не забудьте установить MSMQ.

enter image description here

...