.net - 了解 Azure 消息队列中的毒药消息处理并在逻辑应用中使用它
问题描述
我正在尝试使用连接了多个 Azure Functions 的 Azure Logic Apps 创建工作流。我正在使用 blob 触发器并将其内容发送到第一个函数,然后,该函数将 http req 发送到下一个函数,依此类推。但是我想确保第一个函数正确处理它。所以我想我可以使用消息队列,因为它支持毒药消息处理。
现在,blob 触发器将一条新消息放入队列中,然后由第一个函数处理。我看过很多关于如何设置重试策略的文章(一条消息应该被处理多少次,以及重试之间的间隔),但是我找不到关于如何使用毒药消息处理的信息。所以我的问题是:
超过重试次数后那些毒消息如何处理,
他们只是留在那个队列中,但被标记为毒药吗?
他们是否放在其他队列中,只包含有毒的?
我如何利用甚至找到它们?是否只能手动管理它们,或者我可以设置某种在有毒消息发生时触发的触发器?
我也想知道我的方法是否正确。可以在逻辑应用中直接将 Azure Functions 相互连接起来,还是每个都有自己的消息队列?我什至需要消息队列来处理中毒消息还是有直接在逻辑应用程序中执行此操作的好方法(我知道可以设置重试设置,但我没有看到任何关于自动中毒消息处理的信息)
解决方案
中毒消息在Trigger- toxic messages 中进行了解释:
如果所有五次尝试都失败,函数运行时会将消息添加到名为
<originalqueuename>-poison
. 您可以编写一个函数来处理来自毒物队列的消息,方法是记录它们或发送需要手动注意的通知。
要添加,则从原始队列中删除消息。
因此,毒物队列只是另一个队列,您可以根据需要处理该队列中的消息(例如,使用另一个 Azure 函数)。
您的确切方法是否有效取决于您的要求细节,我认为这超出了这个问题的范围。这可能是一种可行的方法。
推荐阅读
- css - 了解“空格键”和 > 选择元素之间的区别
- css - 从引导程序 5 更改浮动标签的颜色
- javascript - vue.js 不显示谷歌地图
- php - CMB2 灵活内容字段控件不起作用。帮我创建一个可重复的组并添加拖放控件
- reactjs - 如何在reactjs中为计时器自动播放音频
- powershell - PowerShell 与 reg.exe 同步
- react-native - Expo React Native Web 构建优化最佳实践
- java - 一遍又一遍地在 Intelij 中创建 Spring 项目的问题
- python - 从 API 加载多个 Json 响应
- reactjs - 将粗体(布尔值)添加到 Material-ui (raect)