Azure Service Bus主题-订阅消息到期

时间:2019-08-12 21:38:46

标签: c# .net azure azureservicebus

我正在使用Microsoft.Azure.ServiceBus命名空间连接到Service Bus主题。我正在寻找一种迭代地从订阅中检索消息的方法,因为可以使用Microsoft.ServiceBus.Messaging命名空间吗?我正在寻找类似的东西:

SubscriptionClient subscriptionClient = SubscriptionClient.CreateFromConnectionString(ServiceBusConnectionString, TopicName, SubscriptionName);

while(true)
{
    BrokeredMessage brokeredMessage = subscriptionClient.ReceiveAsync().Result;
    var strBody = brokeredMessage.GetBody<Stream>();
    StreamReader streamReader = new StreamReader(strBody);
    Console.WriteLine(streamReader.ReadToEnd());
    brokeredMessage.Complete();
}

AFAIK,Microsoft.Azure.ServiceBus库提供了使用subscriptionClient.RegisterMessageHandler的唯一选项,它使用基础的消息泵。

但是,如果订户应用程序出现故障,并且需要从订阅中读取挂起的未读消息,则需要执行ReceiveReceiveAsync

我的假设正确吗?

1 个答案:

答案 0 :(得分:0)

可以使用两种方法之一从队列/订阅中接收消息。

  1. 手动使用Receive()
  2. 提供的ReceiveAsync() / MessageReceiver
  3. 自动使用QueueClient / SubscriptionClient提供的消息泵

在后台,消息泵(即消息处理程序)使用手动选项来接收消息。