首页 > 解决方案 > 如何使用 Azure Function 应用筛选服务总线事件?

问题描述

如何使用 Azure Function 应用筛选服务总线事件?如果我有一个“事件”主题,并且我将 10 个不同的事件发布到一个主题。如何让天蓝色函数过滤事件。Azure Function Apps 服务是否允许在使用 Function Apps 时进行筛选?

标签: azure-functionsazure-servicebus-topics

解决方案


队列和订阅触发 azure Functions;它们并非旨在过滤掉消息。如果您的主题接收到两个事件,EventA并且EventB只有一个订阅触发了该函数,则这两种事件类型都将由该函数处理。“过滤”消息并执行正确的逻辑将是您的功能代码责任。该过滤可以通过查看客户标头(属性)或解析有效负载(消息正文)来完成。

另一种方法是让服务总线上的专用订阅接收每种消息类型,并具有两个功能,每个事件类型一个。这意味着在 ServiceBus 中创建两个订阅,一个用于EventA,另一个用于EventB,然后为每种事件类型部署两个函数。这样,您可以让每个函数的逻辑只关注一种事件类型,而不必“过滤”掉任何东西。

另一种方法是使用可以为您执行此操作的消息传递中间件。这样你就可以有一个函数来处理两种或更多的消息类型,但保持你的代码干净并且有一个单一的职责——处理一个特定的消息类型。您可以使用 MassTransit 或NServiceBus来完成此操作。


推荐阅读