我想从天蓝色服务总线(队列)中读取所有消息。
我已按照以下指示进行操作 https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-php-how-to-use-queues
目前它正在获取一条消息..
我想从服务总线(队列)中获取所有消息。
先谢谢..
答案 0 :(得分:2)
我认为不可能指定您希望从队列中读取的消息数量(至少使用PHP SDK,当然可以使用.Net SDK)。基本上receiveQueueMessage
是Peek-Lock Message (Non-Destructive Read)
或Receive and Delete Message (Destructive Read)
(取决于配置)REST API方法的包装器,它们都只返回一条消息。
解决此问题的一种方法是在循环中运行代码,直到您没有从队列中收到任何消息为止。您可能遇到的问题是,当peek-lock方法获取的锁过期后,您可能会收到重复的消息,该消息将再次可见。
答案 1 :(得分:0)
使用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;
}
这也可以返回expired
或locked
消息。如果适合您阅读邮件的需求,请快速阅读Message browsing。