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