【问题标题】:Exception occured while trying to use MsmqSubscription storage尝试使用 MsmqSubscription 存储时发生异常
【发布时间】:2023-03-14 04:10:02
【问题描述】:

我是 NService 总线的新手,我正在尝试使用 MSMQSubscrition storage 创建总线,但出现以下错误。

启动端点时出现异常, 错误已被记录。原因:错误 用名字创建对象 'NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage' :设置属性值时出错: PropertyAccessExceptionsException (1 错误);嵌套的 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\work\672d81652eaca4e1\src\impl\unicast\NServiceBus.Unicast.Subscriptions.Msmq\MsmqSubscriptionStorage.cs:line 184 --- 内部异常堆栈跟踪结束 --- 在 NServiceBus.Unicast.Subscriptions.Msmq.MsmqSubscriptionStorage.set_Queue(字符串 值)在 d:\BuildAgent-02\work\672d81652eaca4e1\src\impl\unicast\NServiceBus.Unicast.Subscriptions.Msmq\MsmqSubscriptionStorage.cs:line 188 在(对象,对象,对象[]) 在 Spring.Reflection.Dynamic.SafeProperty.SetValue(对象 目标,对象值)在 l:\projects\spring-net\trunk\src\Spring\Spring.Core\Reflection\Dynamic\DynamicProperty.cs:line 204 在 Spring.Expressions.PropertyOrFieldNode.PropertyValueAccessor.Set(对象 上下文,对象值)在 l:\projects\spring-net\trunk\src\Spring\Spring.Core\Expressions\PropertyOrFieldNode.cs:line 585 在 Spring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValueInternal(对象 上下文,对象新值)在 l:\projects\spring-net\trunk\src\Spring\Spring.Core\Expressions\PropertyOrFieldNode.cs:line 406 在 Spring.Expressions.PropertyOrFieldNode.SetPropertyOrFieldValue(对象 上下文,评估上下文 evalContext, 对象 newValue) 在 l:\projects\spring-net\trunk\src\Spring\Spring.Core\Expressions\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();

谁能解释我出了什么问题? 任何帮助将不胜感激。

谢谢 亚历克斯。

【问题讨论】:

    标签: msmq nservicebus


    【解决方案1】:

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

    <MsmqSubscriptionStorageConfig Queue="queueName" />
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-21
        • 2013-08-25
        相关资源
        最近更新 更多