我在.net应用程序中将NServiceBus与AzureServiceBus传输层一起使用。 .net核心Web应用程序中的发布者,而订阅者是.net核心控制台应用程序。现在的问题是我正在为Web应用程序发布事件,并且在Azure门户中,在Azure Service Bus中由NServiceBus创建为默认主题的“ bundle-1”主题下的订户“订单”中的每个发布事件之后,我都能看到消息计数增加。但是主题的“活动消息计数”为0。但是我的订阅者不执行任何操作均表示未监听。我究竟做错了什么? 这是发布者配置:
~stepCond = Condition();
Routine({
"starting".postln;
~stepCond.wait;
"continuing".postln;
}).play;
OSCfunc(\step, {
~stepCond.unhang();
}, '/step')
和发布代码:
var endpointConfiguration = new EndpointConfiguration("Products");
endpointConfiguration.EnableCallbacks();
var instanceDiscriminator = "8e3af657-tt56-asd3-a75c-2fe8c4bcb635";
endpointConfiguration.MakeInstanceUniquelyAddressable(instanceDiscriminator);
var transport = endpointConfiguration.UseTransport<AzureServiceBusTransport>();
transport.ConnectionString("connectionstring");
var routing = transport.Routing();
routing.RouteToEndpoint(
assembly: typeof(OrderPlacedEvent).Assembly,
destination: "Orders");
endpointInstance = Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();
services.AddSingleton<IMessageSession>(endpointInstance);
和订户代码:
await _messageSession.Publish(new OrderPlacedEvent {OrderId = 1}).ConfigureAwait(false);
和事件:
Console.Title = "Orders";
IServiceCollection serviceProvider = new ServiceCollection();
serviceProvider = Configuration.ConfigureService(serviceProvider);
var endpointConfiguration = new EndpointConfiguration("Orders");
endpointConfiguration.SendFailedMessagesTo("error");
endpointConfiguration.UseSerialization<NewtonsoftSerializer>();
endpointConfiguration.AuditProcessedMessagesTo("audit");
endpointConfiguration.EnableInstallers();
endpointConfiguration.UseContainer<ServicesBuilder>(customizations =>
{
customizations.ExistingServices(serviceProvider);
});
endpointConfiguration.UsePersistence<InMemoryPersistence>();
var transport = endpointConfiguration.UseTransport<AzureServiceBusTransport>();
transport.RuleNameShortener(n => n.Length > 50 ? MD5DeterministicNameBuilder.Build(n) : n);
transport.ConnectionString("connectionString");
var endpointInstance = Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();
Console.WriteLine("Press Enter to exit.");
Console.ReadLine();
endpointInstance.Stop().GetAwaiter().GetResult();
现在,我在处理程序中附加了一个调试器,但是它从未被击中。还有一件事,我也有一些命令,这些命令运行正常。每当我发送任何命令并且订阅者始终收听命令时,Queue的消息计数器都会更新。 最后要提到的一点是,我正在使用Azure门户的免费试用版,但是我认为这不会成为问题,因为命令可以正常工作。有帮助吗?