Я использую служебную шину Azure для обмена сообщениями между двумя основными веб-API-приложениями .Net. Используя topicClient, я могу отправить сообщение в ABS. Но, однако, при использовании клиента подписки для получения сообщения я столкнулся с этой проблемой.
ProcessMessagesAsync - метод не запускается, пока я не дам "Console.Read ();". Я не могу этого дать, потому что использую веб-API.
Как еще я могу запустить этот метод ProcessMessagesAsync, который отлично читает мое сообщение.
Заранее спасибо.
public async Task GetMessageFromSubscription()
{
subscriptionClient = new SubscriptionClient(ServiceBusConnectionString, TopicName, SubscriptionName);
RegisterOnMessageHandlerAndReceiveMessages();
// Console.Read(); ------- Without this line
await subscriptionClient.CloseAsync();
}
public void RegisterOnMessageHandlerAndReceiveMessages()
{
var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler);
subscriptionClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions);
}
private async Task ProcessMessagesAsync(Message message, CancellationToken token)
{
var messageBody = Encoding.UTF8.GetString(message.Body);
var serviceBusMessage = JsonConvert.DeserializeObject<WorkIntakeItem>(messageBody);
await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
}