Azure 服务总线“ReceiveAsync”

Den*_*er9 5 c# azure azureservicebus azure-servicebus-queues

有没有办法使用Microsoft.Azure.ServiceBus包来等待当前线程从队列中接收消息?

这可能更多地是我的理解和希望以不打算使用的方式使用该技术的问题,但我想做的是结合以下 Microsoft 示例中的发送和接收示例,以便您可以将消息发送到各种队列,并能够侦听和处理“回复”(只是您在队列中收听的消息)并在您完成接收消息后关闭连接。

这里有一些伪代码:

   // send message(s) that will be consumed by other processes / applications, and by doing so later on we will expect some messages back
   await SendMessagesAsync(numberOfMessages);

    var receivedMessages = 0;
    while (receivedMessages < numberOfMessages)
    {
        // there is no "ReceiveAsync" method, this is what I would be looking for
        Message message = await queueClient.ReceiveAsync(TimeSpan.FromSeconds(30));
        receivedMessages++;

        // do something with the message here
   }

   await queueClient.CloseAsync();
Run Code Online (Sandbox Code Playgroud)

这是可能的还是我“做错了”?

Mik*_*kov 8

在新的库ReceiveAsync方法中可用的MessageReceiver类:

var messageReceiver = new MessageReceiver(SBConnString, QueueName, ReceiveMode.PeekLock);
Message message = await messageReceiver.ReceiveAsync();
Run Code Online (Sandbox Code Playgroud)

请参阅开始使用 MessageSender 和 MessageReceiver 从服务总线队列发送和接收消息中的完整示例。