2010-11-16 63 views
1

我是NService总线中的新手,我尝试使用MSMQSubscribtion存储创建总线,但出现以下错误。尝试使用MsmqSubscription存储时发生异常

开始端点异常, 错误已被记录。原因:错误 与名称 'NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage' 创建对象:错误设置属性值: PropertyAccessExceptionsException(1个 错误);嵌套0​​PropertyAccessExceptions是: [Spring.Core.TypeMismatchException: 无法 类型的属性值转换[System.String]所需类型 [System.String用于属性 '队列', 内部异常: System.ArgumentException :订阅存储 队列存在 问题。有关详细信息,请参阅所附的例外情况 。 ---> System.Messaging.MessageQueueException: 格式名称无效。 在System.Messaging.MessageQueue.MQCacheableInfo.get_Transactional() 在System.Messaging.MessageQueue.get_Transactional() 在NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage.set_Queue(字符串 值) d:\ BuildAgent-02 \工作\ 672d81652eaca4e1 \ SRC \ IMPL \单播\ NServiceBus.Unicast.Subscriptions.Msmq \ MsmqSubscriptionStorage.cs:线 ---在NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage内部异常堆栈跟踪--- 完.set_Queue(字符串 值) d:\ BuildAgent-02 \ work \ 672d81652eaca4e1 \ src \ impl \ unicast \ NServiceBus.Unicast.Subscriptions.Msmq \ MsmqSubscriptionStorage.cs:行 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:行 at Spring.Expressions.PropertyOrFieldNode.PropertyValueAccessor.Set(Object context,Object value) l:\ projects \ spring-net \ trunk \ src \ Spring \ Spring。芯\表达式\ PropertyOrFieldNode.cs:线在Spring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValueInternal(对象 上下文,对象newValue)以在 升:\项目\弹簧净\主干\ SRC \弹簧\ Spring.Core \表达式\ PropertyOrFieldNode.cs:行在Spring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValue(对象 上下文,EvaluationContext evalContext,对象newValue)以在 升:\项目\弹簧净\主干\ SRC \弹簧\ Spring.Core \表达式\ PropertyOrFieldNode.cs: line 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(); 

任何一个可以解释出了什么问题给我吗? 任何帮助将不胜感激。

谢谢 Alex。

回答

5

看起来您缺少实际的MsmqSubscriptionStorageConfig部分。这是必需的,并且会指向您的订阅队列。

<MsmqSubscriptionStorageConfig Queue="queueName" /> 
1

NServiceBus会自动使用一个称为“NServiceBus_Subscriptions”队列,如果不是在配置文件中定义。一定要安装MSMQ。

enter image description here

相关问题