看着documentation,似乎没有一种方法可以简单地阅读并处理它们。
我的问题是我希望程序或任务检查队列并处理一些消息,并且我不希望该程序或任务存在比清空消息订阅的时间更长。
以下是示例代码:
// Register subscription message handler and receive messages in a loop
RegisterOnMessageHandlerAndReceiveMessages();
Console.ReadKey();
await subscriptionClient.CloseAsync();
我要做的是将Console.ReadKey();
替换为在队列为空时将继续出现的内容。但是,设置类的方式是必须设置一个错误处理程序和一个消息处理程序,然后在发生事件之前,它将基本上调用您的处理程序,直到您告诉它停止为止。我看不到任何消息,可以在没有消息时让您知道。
答案 0 :(得分:1)
我的问题是我希望程序或任务检查队列并处理一些消息,并且我不希望该程序或任务存在比清空消息订阅的时间更长。
消息处理程序构造不适用于您描述的场景。它用于连续的消息流。对于您而言,消息并非始终可用,并且您希望在消息可用时对其进行响应。有两种方法可以通过被动方法来解决它。
答案 1 :(得分:0)
我在示例存储库中找到了一个名为MessageReceiver的类,它提供了我所需的功能。
string subscriptionEntityPath = "my-topic/subscriptions/my-subscription";
MessageReceiver receiver = new MessageReceiver(
serviceBusConnectionString,
subscriptionEntityPath,
ReceiveMode.PeekLock);
var message = await receiver.ReceiveAsync(TimeSpan.FromSeconds(5));
while (message != null)
{
// handle message
message = await receiver.ReceiveAsync(TimeSpan.FromSeconds(5));
}
await receiver.CloseAsync();