我是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();
任何人都可以解释我的错误吗? 任何帮助将不胜感激。
由于 亚历克斯。
答案 0 :(得分:5)
看起来你错过了实际的MsmqSubscriptionStorageConfig部分。这是必需的,并将指向您的订阅队列。
<MsmqSubscriptionStorageConfig Queue="queueName" />
答案 1 :(得分:1)
如果未在配置文件中定义,NServiceBus将自动使用名为“NServiceBus_Subscriptions”的队列。一定要安装MSMQ。