多次读取Azure存储队列中的消息

时间:2018-10-09 16:56:46

标签: azure-storage azure-functions azure-queues queuetrigger

上下文:我有一个Azure存储队列,该队列用作队列触发功能的输入队列。因此,每当有消息添加到队列中时,就会触发某些函数X并开始运行。我想测试消息是否已成功放入队列并被使用。我该如何仅从队列中做到这一点(假设我对功能X没有可见性,并且无法更改队列触发功能的设置)?要进一步解决这个问题:

  • 在队列触发功能使消息出队后,测试时是否仍然可以从中读取消息?如果是,我如何访问它?
  • 由于这里存在竞争条件,如果我在队列触发功能开始执行测试时将消息出队,这将如何干扰队列触发功能?在测试时是否可以使消息出队,但同时,队列触发器是否可以使用该消息出队并在没有干扰的情况下触发我的函数X?
  • 最重要的是,我在Azure存储队列中有一个队列消息,我想从两个不同的源读取两次,并且两个操作之间没有干扰。这可能并得到支持吗?如果是,我该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为您尝试执行此操作的方式无效。您可以使用Peek Messages来读取队列消息而不会使其出队,从而达到某种方式,但是如果函数在您到达之前到达消息,那么您将永远不会看到它。

但是,通过使用Storage Analytics Logging来跟踪队列活动,或者使用Service Bus主题而不是队列,您也许能够获得所需的信息,这样您的消息就可以有多个订阅者。