У меня есть исходный код, который отправляет сообщение в очередь обслуживания, проблема с его удержанием не удалась из-за времени соединения.В чем может быть причина этого исключения времени соединения?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Azure.ServiceBus;
namespace AzureServiceBusApplication
{
class Program
{
static IQueueClient queueClient;
static void Main(string[] args)
{
string ServiceBusConnectionString = "Endpoint=sb://enstaservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=*****=";
string QueueName = "entsaqueuename";
for(int i = 0; i < args.Length; i++)
{
var p = new Program();
if(args[i] == "--ConnectionString")
{
Console.WriteLine($"ConnectionString:{args[i+1]}");
ServiceBusConnectionString = args[i + 1];
}else if(args[i] == "--QueueName")
{
Console.WriteLine($"QueueName:{args[i+1]}");
QueueName = args[i + 1];
}
}
if(ServiceBusConnectionString != "" && QueueName!= "")
{
MainAsync(ServiceBusConnectionString, QueueName).GetAwaiter().GetResult();
}
else
{
Console.WriteLine("Specify - ConnectionString and -QueueName to execute the example");
Console.ReadKey();
}
}
static async Task MainAsync(string ServiceBusConnectionString, string QueueName)
{
const int numberOfMessages = 10;
queueClient = new QueueClient(ServiceBusConnectionString, QueueName);
Console.WriteLine("=====================================================");
Console.WriteLine("Press any key to exit after receiving all the messages");
Console.WriteLine("=======================================================");
RegisterOnMessageHandlerAndReceiverMessages();
await SendMessagesAsync(numberOfMessages);
Console.ReadKey();
}
static void RegisterOnMessageHandlerAndReceiverMessages()
{
var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceiveHandler)
{
MaxConcurrentCalls = 1,
AutoComplete = false
};
queueClient.RegisterMessageHandler(ProcessMessageAsync, messageHandlerOptions);
}
static async Task ProcessMessageAsync(Message message, CancellationToken token)
{
Console.WriteLine($"Received message: SequenceNumber:{message.SystemProperties.SequenceNumber} Body:{Encoding.UTF8.GetString(message.Body)}");
await queueClient.CompleteAsync(message.SystemProperties.LockToken);
}
static Task ExceptionReceiveHandler(ExceptionReceivedEventArgs exceptionReceivedEventArgs)
{
Console.WriteLine("");
var context = exceptionReceivedEventArgs.ExceptionReceivedContext;
Console.WriteLine("Exception context for troubleshooting");
Console.WriteLine($"- Endpoint:{context.Endpoint}");
Console.WriteLine($"- Entitypoint:{context.EntityPath}");
Console.WriteLine($"- Executing Action:{context.Action}");
return Task.CompletedTask;
}
static async Task SendMessagesAsync(int numberOfMessagesToSend)
{
try
{
for(var i = 0; i < numberOfMessagesToSend; i++)
{
string messageBody = $"Message{i}";
var message = new Message(Encoding.UTF8.GetBytes(messageBody));
Console.WriteLine($"Sending message:{messageBody}");
await queueClient.SendAsync(message);
}
}
catch (Exception exception)
{
Console.WriteLine($"{DateTime.Now}:: Exception:{exception.Message}");
}
}
}
}
Пожалуйста, помогите моей команде, так как я застрял в том, где именно происходит исключение, и я выполнил поиск неисправностей.Но в SendMessageAsycn после исключения catch он выбрасывает их из тела. Нужно ли deviceExplore для проверки отправки этого сообщения?.