如何使用 Azure Functions 应用筛选服务总线事件?

How do I filter Service bus events with a Azure Function app?

如何使用 Azure Functions 应用筛选服务总线事件?如果我有一个“事件”主题,并且我向一个主题发布了 10 个不同的事件。如何获取 azure 函数来过滤事件。使用 Function Apps 时,Azure Function apps 服务是否允许过滤?

Queues 和订阅触发 azure 函数;它们不是为了过滤消息而设计的。如果您有一个主题接收到两个事件,EventAEventB,并且只有一个订阅触发了该函数,则该函数将处理这两种事件类型。 “过滤”消息并执行正确的逻辑将是您的功能代码的责任。可以通过查看客户 headers(属性)或解析有效负载(消息的 body)来完成过滤。

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

另一种方法是使用可以为您完成此操作的消息传递中间件。这样你就可以有一个单一的功能来处理两种或多种消息类型,但保持你的代码干净和单一的责任 - 处理特定的消息类型。您可以使用 MassTransit 或 NServiceBus 来完成。