Я использую NServiceBus вместе с транспортным уровнем AzureServiceBus в моем приложении .net.Издателем в основном веб-приложении .net и подписчиком является основное консольное приложение .net.Теперь проблема в том, что я публикую событие для веб-приложения, и на портале Azure я вижу увеличение количества сообщений после каждого события публикации в «Заказах» подписчиков по темам «bundle-1», созданным как тема по умолчанию NServiceBus в Azure Service Bus.Но количество активных сообщений в теме равно 0. Но мой подписчик ничего не делает, значит он не слушает.Что я делаю неправильно?Вот конфигурация издателя:
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();
и событие:
public class OrderPlacedEvent : IEvent {}
Теперь в моем обработчике есть отладчик, но он никогда не срабатывает.Еще одна вещь, у меня также есть некоторые команды, и команды работают нормально.Счетчик сообщений очереди обновляется, когда я отправляю какую-либо команду, а подписчик всегда слушает команды.И еще одна вещь, которую стоит упомянуть: я использую бесплатную пробную версию портала Azure, но думаю, что это не проблема, потому что команды работают нормально.Любая помощь?