NServiceBus:UnicastBusConfig的自定义IConfigurationSource

时间:2011-12-27 13:29:46

标签: nservicebus

我正在尝试将NServiceBus UnicastBusConfig从Web.config移动到(VB.NET)代码,我遇到了一些问题。原始Web.config如下所示:

<UnicastBusConfig>
  <MessageEndpointMappings>
    <add Messages="Messages" Endpoint="TSInputQueue" />
  </MessageEndpointMappings>
</UnicastBusConfig>

当总线配置了这个时,“assembliesToEndpoints”属性最终看起来像这样,一切正常:

Debug image

然后我从Web.config中删除了配置并创建了一个新的IConfigurationSource:

Public Class UnicastBusConfigurator
Implements IConfigurationSource

Public Function GetConfiguration(Of T As Class)() As T Implements NServiceBus.Config.ConfigurationSource.IConfigurationSource.GetConfiguration

    If (GetType(T) Is GetType(UnicastBusConfig)) Then

        Dim mapping = New MessageEndpointMapping()
        mapping.Endpoint = "InputQueue"
        mapping.Messages = "Messages"

        Dim unicastBusConfig As UnicastBusConfig = New UnicastBusConfig()
        unicastBusConfig.MessageEndpointMappings.Add(New MessageEndpointMapping())

        Return TryCast(unicastBusConfig, T)

    End If

    Return TryCast(ConfigurationManager.GetSection(GetType(T).Name), T)

End Function

End Class

我在总线初始化中添加了以下部分(由于某种原因,扩展方法无效......):

config = config.CustomConfigurationSource(New UnicastBusConfigurator)

我已确保执行UnicastBusConfigurator的GetConfiguration方法,但assembliesToEndpoints属性看起来不正确:

NServiceBus endpoints

注意HashTable中的第三行,它是空的。现在,config.CreateBus()。Start()失败:

  

Spring.Objects.Factory.ObjectCreationException:创建名为“NServiceBus.Unicast.UnicastBus”的对象时出错:设置属性值时出错:PropertyAccessExceptionsException(1 errors);嵌套的PropertyAccessExceptions是:   [Spring.Core.TypeMismatchException:无法将类型[System.Collections.Hashtable]的属性值转换为属性'MessageOwners'所需的类型[System.Collections.IDictionary]。,内部异常:System.ArgumentException:加载消息程序集时出现问题: - - &GT; System.ArgumentException:String的长度不能为零。

异常似乎是由空行引起的(“String不能有零长度。”)。

关于我做错了什么的任何想法?

1 个答案:

答案 0 :(得分:1)

我认为这里的问题是代码实际上没有将映射添加到集合中。代码添加一个新的空MessageEndpointMapping。我认为它应该是:

unicastBusConfig.MessageEndpointMappings.Add(mapping)

这应该给NSB一些东西来映射。