我可以配置 azure 函数来查看和读取服务总线队列中的消息但不删除它吗?

Can I configure azure function to peek and read message in service bus queue but not delete it?

Azure Functions Service Bus bindings:

触发行为

...

PeekLock 行为 - Functions 运行时在 PeekLock 模式下接收消息,如果函数成功完成,则在消息上调用 Complete,如果函数失败,则调用 Abandon。如果函数运行时间超过 PeekLock 超时时间,锁将自动更新。

我假设当 azure 函数对消息调用 Complete 时,它​​将从队列中删除。

如果我想让我的函数监视消息但永远不会删除它,我应该在我的函数中做什么?

消息处理不成功导致函数抛出异常或对消息的显式放弃操作将无法完成消息。

话虽如此,我发现这种方法存在问题。您并不是真正地 "spying" 处理这些消息,而是在积极地处理这些消息。这意味着给定的消息将被重新传递并最终进入死信队列。如果你想监视,你应该 peek 查看消息,但 Azure 服务总线触发器不会这样做。

如果您需要实现窃听功能,那么使用一个主题并拥有 2 个订阅可能不是一个坏主意,一个订阅用于使用消息,另一个用于复制窃听功能的所有消息(这可能会起到某种作用分析或记录)。在不了解您所做工作的全部范围的情况下,很难提供答案。