多次读取 Azure 存储队列中的消息
Reading a message in Azure storage queue multiple times
上下文:我有一个 Azure 存储队列用作队列触发器函数的输入队列。因此,无论何时将消息添加到队列中,都会触发某些函数 X 并启动 运行。我想测试消息是否成功放入队列并被消费。我如何才能仅从队列中执行此操作(假设我无法看到我的函数 X,并且我无法更改队列触发器函数的设置)?进一步分解这个问题:
- Queue Trigger Function 将消息出列后,测试时是否仍然可以读取消息?如果是,我如何访问它?
- 由于这里存在竞争条件,如果我在队列触发器功能开始执行测试时将消息出队,这将如何干扰队列触发器的功能?是否可以在测试时将消息出列,但同时,队列触发器是否可以将其出列并完全不受干扰地触发我的函数 X?
- 最重要的是,我在 Azure 存储队列中有一条队列消息,我想从两个不同的来源读取两次,两个操作之间没有干扰。这可能并得到支持吗?如果是,我该怎么做?
谢谢!
我认为您尝试执行此操作的方式行不通。您可以通过使用 Peek Messages 读取队列消息而不使它们出队来完成部分工作,但是如果函数在您之前到达消息,那么您将永远不会首先看到它。
但是,您也许可以通过使用 Storage Analytics Logging 跟踪队列 activity 或使用服务总线主题而不是队列来获取所需的信息,这样您的消息可以有多个订户。
上下文:我有一个 Azure 存储队列用作队列触发器函数的输入队列。因此,无论何时将消息添加到队列中,都会触发某些函数 X 并启动 运行。我想测试消息是否成功放入队列并被消费。我如何才能仅从队列中执行此操作(假设我无法看到我的函数 X,并且我无法更改队列触发器函数的设置)?进一步分解这个问题:
- Queue Trigger Function 将消息出列后,测试时是否仍然可以读取消息?如果是,我如何访问它?
- 由于这里存在竞争条件,如果我在队列触发器功能开始执行测试时将消息出队,这将如何干扰队列触发器的功能?是否可以在测试时将消息出列,但同时,队列触发器是否可以将其出列并完全不受干扰地触发我的函数 X?
- 最重要的是,我在 Azure 存储队列中有一条队列消息,我想从两个不同的来源读取两次,两个操作之间没有干扰。这可能并得到支持吗?如果是,我该怎么做?
谢谢!
我认为您尝试执行此操作的方式行不通。您可以通过使用 Peek Messages 读取队列消息而不使它们出队来完成部分工作,但是如果函数在您之前到达消息,那么您将永远不会首先看到它。
但是,您也许可以通过使用 Storage Analytics Logging 跟踪队列 activity 或使用服务总线主题而不是队列来获取所需的信息,这样您的消息可以有多个订户。