从队列中读取来自 Azure 服务总线的所有消息

Reading all messages from azure service bus from queue

我想读取来自 Azure 服务总线(队列)的所有消息。

我已按照下面的说明进行操作 link https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-php-how-to-use-queues

目前正在获取一条消息..

我想从服务总线(队列)中获取所有消息。

提前致谢..

我认为无法指定您希望从队列中读取的消息数(至少使用 PHP SDK,当然可以使用 .Net SDK)。本质上 receiveQueueMessagePeek-Lock Message (Non-Destructive Read) or Receive and Delete Message (Destructive Read)(取决于配置)REST API 方法的包装器,并且它们 return 只有一条消息。

解决此问题的一种方法是 运行 您的代码处于循环状态,直到您没有从队列中收到任何返回的消息。您可能 运行 遇到的问题是您可能会收到重复的消息,因为一旦通过 peek-lock 方法获取的锁过期,该消息将再次可见。

使用服务总线的Peek操作概念可以读取队列中的所有消息。

MessagingFactory messagingFactory = MessagingFactory.CreateFromConnectionString(<Your_Connection_String>);
var queueClient = messagingFactory.CreateQueueClient(<Your_Queue_Name>, ReceiveMode.PeekLock); // Receive mode is by default PeekLock and hence, optional.
BrokeredMessage message = null;
while(true)
{
  message = queueClient.Peek(); // You have read one message
  if (message == null) // Continue till you receive no message from the Queue
    break; 
}

这也可以是 return expiredlocked 消息。如果这符合您阅读消息的要求,请快速阅读 Message browsing