Я использую Service Bus of azure, который будет содержать мой список сообщений, означает, что сообщения могут входить в служебную шину в любое время.Как проверить прибытие сообщения в служебную шину каждые 20 секунд?
Так что я хочу следить за своей служебной шиной, чтобы проверить, есть ли какое-либо сообщение в сервисе или нет. Это похоже на то, что я просто хочу следить за моей служебной шиной относительно прибытия сообщения в свою служебную шину по адресу интервал 0f 20 секунд.
В Каждые 20 секунд я хотел бы проверить прибытие сообщения в моей служебной шине, и это я хочу выполнить в фоновом режиме асинхронно.
Я хочу назвать ниже метода каждые 20 секунд в фоновом режиме:
private static void ReceiveMessages()
{
// For PeekLock mode (default) where applications require "at least once" delivery of messages
SubscriptionClient agentSubscriptionClient = SubscriptionClient.Create(TopicName, "AgentSubscription");
BrokeredMessage message = null;
while (true)
{
try
{
//receive messages from Agent Subscription
message = agentSubscriptionClient.Receive(TimeSpan.FromSeconds(5));
if (message != null)
{
Console.WriteLine("\nReceiving message from AgentSubscription...");
Console.WriteLine(string.Format("Message received: Id = {0}, Body = {1}", message.MessageId, message.GetBody<string>()));
// Further custom message processing could go here...
message.Complete();
}
else
{
//no more messages in the subscription
break;
}
}
catch (MessagingException e)
{
if (!e.IsTransient)
{
Console.WriteLine(e.Message);
throw;
}
else
{
HandleTransientErrors(e);
}
}
}
// For ReceiveAndDelete mode, where applications require "best effort" delivery of messages
SubscriptionClient auditSubscriptionClient = SubscriptionClient.Create(TopicName, "AuditSubscription", ReceiveMode.ReceiveAndDelete);
while (true)
{
try
{
message = auditSubscriptionClient.Receive(TimeSpan.FromSeconds(5));
if (message != null)
{
Console.WriteLine("\nReceiving message from AuditSubscription...");
Console.WriteLine(string.Format("Message received: Id = {0}, Body = {1}", message.MessageId, message.GetBody<string>()));
// Further custom message processing could go here...
}
else
{
Console.WriteLine("\nno more messages in the subscription");
//no more messages in the subscription
break;
}
}
catch (MessagingException e)
{
if (!e.IsTransient)
{
Console.WriteLine(e.Message);
throw;
}
}
}
agentSubscriptionClient.Close();
auditSubscriptionClient.Close();
}
Так может кто-нибудь сказать мне, как я называю этот описанным выше способом каждые 20 секунд?