排除版本3.x中的特定nservicebus主机处理程序(类)

时间:2016-08-30 11:41:13

标签: nservicebus nservicebus3

我有一个NServiceBus主机订阅了某个事件,并有自己的处理程序(#1)。该主机还引用了一个程序集,该程序集包含同一事件的另一个处理程序(#2)。我想从NServiceBus配置中排除处理程序#2,但我无法删除引用的程序集。

重要

1)我尝试使用此设置扫描:http://docs.particular.net/nservicebus/hosting/assembly-scanning

2)我使用NServiceBus版本3.x

1 个答案:

答案 0 :(得分:4)

删除程序集

NServiceBus v3扫描程序集。如果在运行时不需要装配,那么只需将其移除即可扫描。

仅仅因为它被引用并不需要部署它。

排除程序集(黑名单)

排除文档中提到的程序集:

var allAssemblies = AllAssemblies
    .Except("MyAssembly1.dll")
    .And("MyAssembly2.dll");
Configure.With(allAssemblies);

http://docs.particular.net/nservicebus/hosting/assembly-scanning#exclude-a-list-approach

包括程序集或类型(白名单)

仅允许扫描特定的一组程序集或类型。基本上解析白名单的程序集或类型范围。

装配体:

IEnumerable<Assembly> allowedAssembliesToScanForTypes;
Configure.With(allowedAssembliesToScanForTypes);
// or
Configure.With(assembly1, assembly2);

类型:

IEnumerable<Type> allowedTypesToScan;
Configure.With(allowedTypesToScan);

排除特定类型

// Results in the same assembly scanning as used by NServiceBus internally
var allTypes = from a in AllAssemblies.Except("Dummy") 
               from t in a.GetTypes()
               select t;

// Exclude handlers that you do not want to be registered
var allowedTypesToScan = allTypes
    .Where(t => t != typeof(EventMessageHandler)) 
    .ToList();

Configure.With(allowedTypesToScan);

http://docs.particular.net/nservicebus/hosting/assembly-scanning#include-a-list-approach-including-assemblies