1
votes

I am newbie in NService bus and I am trying to create a bus using MSMQSubscribtion storage , but I am getting following error.

Exception when starting endpoint, error has been logged. Reason: Error creating object with name 'NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage' : Error setting property values: PropertyAccessExceptionsException (1 errors); nested PropertyAccessExceptions are: [Spring.Core.TypeMismatchException: Cannot convert property value of type [System.String] to required type [System.String] for property 'Queue'., Inner Exception: System.ArgumentException: There is a problem with the subscription storage queue . See enclosed exception for details. ---> System.Messaging.MessageQueueException: Format name is invalid. at System.Messaging.MessageQueue.MQCacheableInfo.get_Transactional() at System.Messaging.MessageQueue.get_Transactional() at NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage.set_Queue(String value) in d:\BuildAgent-02\work\672d81652eaca4e1\src\impl\unicast\NServiceBus.Unicast.Subscriptions.Msmq\MsmqSubscriptionStorage.cs:line 184 --- End of inner exception stack trace --- at NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage.set_Queue(String value) in d:\BuildAgent-02\work\672d81652eaca4e1\src\impl\unicast\NServiceBus.Unicast.Subscriptions.Msmq\MsmqSubscriptionStorage.cs:line 188 at (Object , Object , Object[] ) at Spring.Reflection.Dynamic.SafeProperty.SetValue(Object target, Object value) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Reflection\Dynamic\DynamicProperty.cs:line 204 at Spring.Expressions.PropertyOrFieldNode.PropertyValueAccessor.Set(Object context, Object value) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Expressions\PropertyOrFieldNode.cs:line 585 at Spring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValueInternal(Object context, Object newValue) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Expressions\PropertyOrFieldNode.cs:line 406 at Spring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValue(Object context, EvaluationContext evalContext, Object newValue) in l:\projects\spring-net\trunk\src\Spring\Spring.Core\Expressions\PropertyOrFieldNode.cs:line 348]

This is my Config section .

<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> 

This is how I tried to create the bus

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

Can any one explain what went wrong for me? Any help would be much appreciated.

Thanks Alex.

2

2 Answers

5
votes

Looks like you are missing the actual MsmqSubscriptionStorageConfig section. This is required and will point to your subscription queue.

<MsmqSubscriptionStorageConfig Queue="queueName" />
1
votes

NServiceBus will automatically use a queue called "NServiceBus_Subscriptions", if not defined in configuration file. Be sure to have installed MSMQ.

enter image description here