我正在使用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
的唯一选项,它使用基础的消息泵。
但是,如果订户应用程序出现故障,并且需要从订阅中读取挂起的未读消息,则需要执行Receive
或ReceiveAsync
我的假设正确吗?
答案 0 :(得分:0)
可以使用两种方法之一从队列/订阅中接收消息。
Receive()
或ReceiveAsync()
/ MessageReceiver
QueueClient
/ SubscriptionClient
提供的消息泵在后台,消息泵(即消息处理程序)使用手动选项来接收消息。