Я вижу следующее исключение при запуске приложения при использовании SendEndpoint в Azure Service Bus. Невозможно воспроизвести проблему на RabbitMQ; невозможно воспроизвести на ASB при использовании Publish()
вместо Send()
.
Microsoft.Azure.ServiceBus.MessagingEntityNotFoundException: Queue was not found
at Microsoft.Azure.ServiceBus.Management.QueueDescriptionExtensions.ParseFromContent(String xml) in C:\source\azure-service-bus-dotnet\src\Microsoft.Azure.ServiceBus\Management\QueueDescriptionExtensions.cs:69
at Microsoft.Azure.ServiceBus.Management.ManagementClient.GetQueueAsync(String queuePath, CancellationToken cancellationToken) in C:\source\azure-service-bus-dotnet\src\Microsoft.Azure.ServiceBus\Management\ManagementClient.cs:198
После следа стека queueName
, на который он жалуется в GetQueueAsync()
, равен GaldinsMac_dotnet_bus_dpfoyyr5d1ojub5kbdmqijse8g
.
Это простое консольное приложение. Вот мой код:
static async Task Main()
{
var bus = Bus.Factory.CreateUsingAzureServiceBus(sbc =>
{
sbc.RequiresSession = false; // doesn't seem to help
var host = sbc.Host(
"Endpoint=sb://ns.servicebus.windows.net/;SharedAccessKeyName=localtesting;SharedAccessKey=key",
_ => { });
});
try
{
await bus.StartAsync();
// the exception is thrown here, but I can still continue and ignore the exception
var uri = new Uri(bus.Address, "queueName");
// debugger shows uri to be: sb://ns.servicebus.windows.net/queueName
var endpoint = await bus.GetSendEndpoint(uri);
await endpoint.Send(new SayHiCommand(
name: "Jane Doe"));
}
finally
{
await bus.StopAsync();
}
}
Код работает с RabbitMQ, но не с ASB, поэтому я уверен, что где-то что-то упустил. Работает с ASB, если я использую Publish<>()
вместо Send<>()
, но это не то, что я хочу здесь.