我在.NET 2.2核心应用程序中实现NServiceBus。一切工作正常,但现在我已决定在一个单独的解决方案移动处理器,并从解决方案的WebAPI调用它们。最初,我曾在同一个解决方案的所有设置,以便我可以实现路由是这样的:
var endpointConfiguration = newEndpointConfiguration(AssemblyName);
var transport = endpointConfiguration.UseTransport<LearningTransport>();
endpointConfiguration.SendOnly();
var routing = transport.Routing();
routing.RouteToEndpoint(
assembly: typeof(OrderProcessEvent).Assembly,
destination: "Orders");
endpoint = NServiceBus.Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();
现在,我怎么能提供的“目的地”其他解决途径?就像是:
routing.RouteToEndpoint(
assembly: typeof(OrderProcessEvent).Assembly,
destination: @"C:\Endpoints\Orders");
更新:
通过丹尼尔斯的回答。我曾经尝试这样做:
var endpointConfiguration = new EndpointConfiguration(AssemblyName);
var transport = endpointConfiguration.UseTransport<LearningTransport>();
//endpointConfiguration.SendOnly();
transport.StorageDirectory(@"..\.Endpoints\");
var routing = transport.Routing();
routing.RouteToEndpoint(
assembly: typeof(OrderProcessEvent).Assembly,
destination: "Orders");
endpoint = NServiceBus.Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();
但我仍然得到同样的错误
“对于消息没有指定目标:Namespace.Orders”
当使用学习传输(需要注意的不是生产运输),你可以指定存储目录
var transport = endpointConfiguration.UseTransport<LearningTransport>();
transport.StorageDirectory("PathToStoreTransportFiles");
如果所有端点指向同一个目录,他们可以一起交流。一个简单的例子,假设你的src
目录的结构如下方式
src\
Solution1\
Solution2\
你可以配置类似下面的学习交通
var transport = endpointConfiguration.UseTransport<LearningTransport>();
transport.StorageDirectory("..\.learningtransport");
然后创建
src\
Solution1\
Solution2\
.learningtransport
请注意,如果你设置的存储目录这样你可能需要考虑到,终端将在bin\[Release|Debug]\netXYZ
执行帐户。
关于学习传输配置更多信息可以在https://docs.particular.net/transports/learning找到