NServiceBus 5与RabbitMQ传输在启用UnicastBus时引发异常

NServiceBus 5与RabbitMQ传输在启用UnicastBus时引发异常,rabbitmq,nservicebus,Rabbitmq,Nservicebus,我正在尝试在自托管场景中使用NServiceBus和RabbitMQ。我已经在github上获得了NServiceBus和NServiceBus.RabbitMQ repos的源代码,以跟踪到目前为止我遇到的问题,因此我使用的版本是他们截至昨天的repos的源代码 以下是我的配置: var-busConfiguration=new-busConfiguration(); busConfiguration.EndpointName(“RMAQueue”); 总线配置.AssembliesToSca

我正在尝试在自托管场景中使用NServiceBus和RabbitMQ。我已经在github上获得了NServiceBus和NServiceBus.RabbitMQ repos的源代码,以跟踪到目前为止我遇到的问题,因此我使用的版本是他们截至昨天的repos的源代码

以下是我的配置:

var-busConfiguration=new-busConfiguration();
busConfiguration.EndpointName(“RMAQueue”);
总线配置.AssembliesToScan(typeof(RMACommand).Assembly);
busConfiguration.Conventions()
.DefiningCommandsAs(type=>type.Namespace!=null&&type.Namespace.StartsWith(“RMAInterfaces.Commands.”,StringComparison.Ordinal));
busConfiguration.Conventions()
.DefiningEventsAs(type=>type.Namespace!=null&&type.Namespace.StartsWith(“RMAInterfaces.Events.”,StringComparison.Ordinal));
busConfiguration.Conventions()
.DefiningMessagesAs(type=>type.Namespace!=null&&type.Namespace.StartsWith(“RMAInterfaces.Messages.”,StringComparison.Ordinal));
busConfiguration.UseTransport();
busConfiguration.Transactions().Disable();
busConfiguration.PurgeOnStartup(真);
useConserialization();
busConfiguration.DisableFeature();
busConfiguration.DisableFeature();
busConfiguration.DisableFeature();
busConfiguration.UsePersistence();
busConfiguration.EnableInstallers();
var bus=总线创建(总线配置);
我在
总线上遇到异常。Create()
行:

{"The given key (NServiceBus.LocalAddress) was not present in the dictionary."}
从堆栈开始,我看到它在启用
功能时失败了

这是我的应用程序配置:



使用RabbitMQ传输自托管NServiceBus,我还缺少什么?

我刚刚遇到了这个问题,修复方法正如Andreas所建议的那样。我在配置代码中添加了以下内容

configuration.AssembliesToScan(typeof(NServiceBus.Transports.RabbitMQ.IManageRabbitMqConnections).Assembly);
这样,有关NServiceBus.LocalAddress的错误消息将不再显示。我的完整设置如下(代码,然后是配置文件)

[TestMethod]
公共void TestMethod1()
{
LogManager.Use();
var配置=新总线配置();
AssembliesToScan(typeof(NServiceBus.Transports.RabbitMQ.imanagerabitmqconnections.Assembly);
configuration.UseSerialization();
configuration.UseTransport();
configuration.UsePersistence();
var bus=global::NServiceBus.bus.Create(配置);
bus.Start();
}

摩根·斯金纳的回答帮助我找出了问题的真正根源。我已经添加了建议的代码
configuration.AssembliesToScan(typeof(NServiceBus.Transports.RabbitMQ.imanagerabitmqconnections.Assembly)


此后,例外情况更具描述性。NServiceBus.RabbitMQ包自动下载RabbitMQ.Client包。稍后的包已更新为nuget上提供的最新版本,并且创建的版本与NserviceBus.RabbitMQ预期的版本和实际安装的版本之间存在冲突。我已经完全删除了这两个包,并重新安装了NserviceBus.RabbitMQ包,错误消失了。..assembliesToScan。。。该行也不再需要。

能否在汇编扫描中包含NServiceBus.RabbitMQ.dll并查看其是否有效?与
[TestMethod]
public void TestMethod1()
{
    LogManager.Use<Log4NetFactory>();
    var configuration = new BusConfiguration();
    configuration.AssembliesToScan(typeof(NServiceBus.Transports.RabbitMQ.IManageRabbitMqConnections).Assembly);
    configuration.UseSerialization<JsonSerializer>();
    configuration.UseTransport<NServiceBus.RabbitMQTransport>();
    configuration.UsePersistence<InMemoryPersistence>();

    var bus = global::NServiceBus.Bus.Create(configuration);
    bus.Start();
}



<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, Log4net" />
  </configSections>

  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />

  <connectionStrings>
    <add name="NServiceBus/Transport" connectionString="host=localhost" />
  </connectionStrings>

  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Assembly="TestNSBCreation" Endpoint="TestNSBCreation" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

  <log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
      <appender-ref ref="ContactAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="C:\logs\TestNSBCreation.log" />
      <param name="AppendToFile" value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
  </log4net>

</configuration>