当前位置: 首页 > 知识库问答 >
问题:

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

卓云
2023-03-14

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

我已经按照下面的指示链接https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-php-how-to-use-queues

目前它只能获取一条消息。。

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

提前谢谢。。

共有2个答案

马坚
2023-03-14

使用服务总线的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; 
}

这也可以返回过期的锁定的消息。如果邮件浏览符合您阅读邮件的要求,请快速阅读。

穆智刚
2023-03-14

我认为不可能指定您希望从队列中读取的消息数量(至少在PHP SDK中,这当然是可能的。NET SDK).本质上是一个包装器,用于包装Peek-Lock消息(非破坏性读取)或接收和删除消息(破坏性读取)(取决于配置)REST API方法,它们都只返回单个消息。

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

 类似资料:
  • 我是Azure服务总线的新手,我应该将消息推送到队列中,然后有一个单独的计划任务,该任务将读取该队列中的所有活动消息,并将它们批量导入到sql我以前尝试过这个代码,当我调用时它正在工作它在发送消息后立即工作,但现在它在单独的计划任务中不工作。任何帮助为什么或什么我可以用来批量阅读信息或这是不可能的

  • 我正在使用Azure服务总线队列。但是我不能使用“获取所有队列消息(peek Lock):微软内置于api”从队列中获取所有消息。 有没有办法获取所有队列消息? {"$连接":{"值":{"servicebus_1":{"连接ID":"/订阅/c776fex3-6aec-4722-b099-b054c267b240/资源组/Plugin-Resources/提供者/Microsoft.网络/连接/

  • 我有一个应用程序,在这个应用程序中,我可以在进程的一部分中以JSON格式将消息写入Azure服务总线队列。我有一个下游进程,我想将该消息从队列中弹出,将json转换为一个对象,然后处理该对象。 我没有问题将消息推送到队列上,但我还没有找到任何将消息从队列中逐一或循环弹出的示例。我在微软或Github上看到的每一个例子都是一个控制台应用程序(在网络应用程序中毫无用处),它设置了某种侦听器,可以抓取队

  • 我有一个Azure服务总线队列,死信子队列中有236条消息。我知道这一点,因为Azure门户和服务总线资源管理器会向我显示该数字。 我在LINQPad中写了以下内容来检索所有236条消息并检查它们。然而,它只返回236条消息中的136条。 我正在使用v5。微软的1.0。蔚蓝色的获取服务包。 有没有想过为什么我没有收到全部236条信息?

  • 我有一个windows服务,它侦听Azure服务总线队列消息,以便从我的WebApi应用程序分发处理。此外,我还需要处理重复性任务(每晚/每周),我认为最好使用相同的系统来处理这些任务。 例如,假设我有一个“CleanupDb”队列,每天午夜删除过时的DB节点: 理论上这应该行得通,但我觉得我错过了一个更明显的处理方法。有没有更好的办法?

  • 我知道有一种方法可以确定Azure队列(商店帐户)中的邮件数量(或近似数量);但是,有没有办法查询Azure服务总线队列上挂起的消息数?