是否有任何理由不能在发布/订阅协议中使用 Rebus,订阅从共享程序集中发布消息的多个端点?
当我尝试使用此配置 Rebus 订户时:
<rebus inputQueue="ocs.subscriber.input" errorQueue="ocs.subscriber.error" workers="1" maxRetries="5">
<endpoints>
<add messages="D3A.Messages" endpoint="ocs.publisher.input" />
<add messages="D3A.Messages" endpoint="ocs.publisher.input@osi2552" />
</endpoints>
</rebus>
抛出异常
.Transport(t => t.UseMsmqAndGetInputQueueNameFromAppConfig())
抛出的异常是这样的:
An unhandled exception of type 'Rebus.Configuration.ConfigurationException' occurred in Rebus.dll
Additional information:
An error occurred when trying to parse out the configuration of the RebusConfigurationSection:
System.Configuration.ConfigurationErrorsException: The entry 'D3A.Messages' has already been added. (C:\projects\OCS.Subscriber\bin\Release\OCS.Subscriber.vshost.exe.Config line 22)
at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at Rebus.Configuration.RebusConfigurationSection.LookItUp()
at Rebus.Transports.Msmq.MsmqConfigurationExtension.UseMsmqAndGetInputQueueNameFromAppConfig(RebusTransportConfigurer configurer)
这对我来说似乎有点奇怪。让 Rebus 订阅多个发布者似乎是一个完全有效的用例——其中一些发布者共享一个公共 POCO 程序集。
这背后的原因是什么......(更重要的是)有没有办法在 Rebus 中实现这一点?
而且:我期待 Rebus 将此异常添加到日志中(我使用 log4net),但似乎没有记录在 Rebus 配置期间引发的异常。这一定是个错误,对吧?