gpt4 book ai didi

c# - 通过约定配置的事件不会导致订阅

转载 作者:行者123 更新时间:2023-12-03 22:57:56 25 4
gpt4 key购买 nike

我的应用程序正在尝试从端点接收事件。
如果我明确地 Subscribe<>() ,我会看到发布端点上有订阅。如果我尝试通过配置约定来获得相同的结果,则会失败。

我错过了什么?

我的配置如下:

public Subscriber(int maxConcurrency)
{
var pingEventType = typeof(IMyEvent);
var pingHandlerType = typeof(MyEventHandler);

var busConfiguration = new BusConfiguration();
busConfiguration.EndpointName("MyEndpointName");
busConfiguration.UseSerialization<JsonSerializer>();
busConfiguration.EnableInstallers();
busConfiguration.UsePersistence<NHibernatePersistence>();
busConfiguration
.UseTransport<SqlServerTransport>()
.CallbackReceiverMaxConcurrency(maxConcurrency);
busConfiguration.AssembliesToScan(AllAssemblies
.Matching("NServiceBus")
.And("ServiceControl")
.And(pingHandlerType.AssemblyQualifiedName)
.And(pingEventType.AssemblyQualifiedName));
busConfiguration
.Conventions()
.DefiningEventsAs(x => x.Namespace != null && x.Namespace == pingEventType.Namespace);

var container = new ContainerBuilder().Build();
busConfiguration.UseContainer<AutofacBuilder>(customizations =>
{
customizations.ExistingLifetimeScope(container);
});
_startableBus = Bus.Create(busConfiguration);

// Uncommenting below line results in subscription on the publishing endpoint
//_startableBus.Subscribe(pingEventType);
}

最相关的文档和示例代码似乎没有提到我应该做的任何其他事情 https://docs.particular.net/nservicebus/messaging/conventions?version=core_5

最佳答案

找到了。 AssemblyQualifiedName 是以程序集为前缀的类型名称。我需要的是程序集本身的名称。所以

busConfiguration.AssembliesToScan(AllAssemblies
.Matching("NServiceBus")
.And("ServiceControl")
.And(pingHandlerType.AssemblyQualifiedName)
.And(pingEventType.AssemblyQualifiedName));

应该是

busConfiguration.AssembliesToScan(AllAssemblies
.Matching("NServiceBus")
.And("ServiceControl")
.And(pingHandlerType.Assembly.GetName().Name)
.And(pingEventType.Assembly.GetName().Name));

让我困惑了好几个小时的是 type.Assmembly.FullName 是程序集的名称,附有所有版本信息等。这也行不通。

关于c# - 通过约定配置的事件不会导致订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44046938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com