了解Azure消息队列中的毒性消息处理并在逻辑应用程序中使用它

时间:2018-06-07 09:13:36

标签: .net azure message-queue azure-functions azure-logic-apps

我正在尝试使用Azure Logic Apps创建工作流,其中连接了多个Azure功能。我正在使用blob触发器并将其内容发送到第一个函数,然后,该函数将http请求发送到下一个函数,依此类推。但是,我想确保第一个函数正确处理它。所以我想我可以使用Message Queue,因为它支持Poison Message Handling。

现在,blob触发器将新消息放入队列中,然后由第一个函数进行处理。我已经看过很多关于如何设置重试策略的文章(消息应该被处理多少次以及重试之间的间隔),但是我无法找到有关如何使用毒性消息处理的信息。所以我的问题是:

超过重试次数后,如何处理这些有害消息

他们只是留在那个队列中,但被标记为毒药?

它们是否放在其他队列中,只包含有毒的队列?

我怎样才能利用甚至找到它们?是否只能手动管理它们,或者我可以设置某种触发器,当发生有害信息时会触发它?

我也想知道我的方法是否正确。是否可以在Logic Apps中将Azure功能直接相互连接,或者每个功能都有自己的Message Queue?我是否甚至需要消息队列来处理毒药消息,或者是否有一种直接在Logic Apps中执行此操作的好方法(我知道可以设置重试设置,但我还没有看到任何有关自动毒药消息处理的信息)

1 个答案:

答案 0 :(得分:0)

毒药信息在Trigger - poison messages中解释:

  

如果所有五次尝试都失败,则函数运行时会将消息添加到名为<originalqueuename>-poison的队列中。您可以编写一个函数来处理来自毒性队列的消息,方法是记录它们或发送需要手动注意的通知。

要添加,邮件将从原始队列中删除。

因此,毒性队列只是另一个队列,您可以根据需要处理该队列中的消息(例如,使用其他Azure功能)。

您的确切方法是否有效取决于您的要求的详细信息,我认为这超出了此问题的范围。这可能是一种可行的方法。