尝试使用MsmqSubscription存储时发生异常

时间:2010-11-16 06:51:10

标签: msmq nservicebus

我是NService总线的新手,我正在尝试使用MSMQSubscribtion存储创建一个总线,但我收到了以下错误。

  

启动端点时出现异常,   错误已被记录。原因:错误   用名称创建对象   'NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage'   :设置属性值时出错:   PropertyAccessExceptionsException(1   错误);嵌套   PropertyAccessExceptions是:       [Spring.Core.TypeMismatchException:   无法转换类型的属性值   [System.String]为必需的类型   [System.String]属性'Queue'。,   内在例外:   System.ArgumentException:有一个   订阅存储的问题   队列。参见随附的例外情况   细节。 --->   System.Messaging.MessageQueueException:   格式名称无效。          在System.Messaging.MessageQueue.MQCacheableInfo.get_Transactional()          在System.Messaging.MessageQueue.get_Transactional()          at NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage.set_Queue(String   价值)   d:\ BuildAgent-02 \工作\ 672d81652eaca4e1 \ SRC \ IMPL \单播\ NServiceBus.Unicast.Subscriptions.Msmq \ MsmqSubscriptionStorage.cs:线   184          ---内部异常堆栈跟踪结束---          at NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage.set_Queue(String   价值)   d:\ BuildAgent-02 \工作\ 672d81652eaca4e1 \ SRC \ IMPL \单播\ NServiceBus.Unicast.Subscriptions.Msmq \ MsmqSubscriptionStorage.cs:线   188          at(Object,Object,Object [])          在Spring.Reflection.Dynamic.SafeProperty.SetValue(Object   目标,对象值)   L:\项目\弹簧网\行李箱的\ src \春\ Spring.Core \反射\动态\ DynamicProperty.cs:行   204          在Spring.Expressions.PropertyOrFieldNode.PropertyValueAccessor.Set(Object   上下文,对象值)   L:\项目\弹簧网\行李箱的\ src \春\ Spring.Core \用语\ PropertyOrFieldNode.cs:行   585          在Spring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValueInternal(Object   context,Object newValue)in   L:\项目\弹簧网\行李箱的\ src \春\ Spring.Core \用语\ PropertyOrFieldNode.cs:行   406          在Spring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValue(Object   context,EvaluationContext   evalContext,Object newValue)in   L:\项目\弹簧网\行李箱的\ src \春\ Spring.Core \用语\ 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 个答案:

答案 0 :(得分:5)

看起来你错过了实际的MsmqSubscriptionStorageConfig部分。这是必需的,并将指向您的订阅队列。

<MsmqSubscriptionStorageConfig Queue="queueName" />

答案 1 :(得分:1)

如果未在配置文件中定义,NServiceBus将自动使用名为“NServiceBus_Subscriptions”的队列。一定要安装MSMQ。

enter image description here