Node.js 通过事件网格从Azure函数传递HTTP请求
我已经开始考虑一个基于Azure函数和事件网格构建的系统的原型架构 我想要实现的是有一个单一的入口点(函数),各种外部供应商将向其发送Webhook(GET)HTTP请求。该函数的目的是向有效负载添加一些元数据,并将包(来自供应商的元数据+原始有效负载)发布到事件网格中。然后,事件网格将触发另一个函数,其目的是用状态204 HTTP代码响应原始Webhook HTTP请求 下图是架构的简化版本,事件网格当然也会将事件发布到其他函数,但为了简单起见 我目前面临的挑战是,在触发第一个函数后,来自外部供应商的原始Webhook HTTP请求的上下文丢失。尝试将上下文作为事件负载的一部分发送到事件网格感觉像是一种反模式,不管怎样,我都无法让它工作(事件中的某个地方丢失了Node.js 通过事件网格从Azure函数传递HTTP请求,node.js,azure,azure-functions,azure-eventgrid,Node.js,Azure,Azure Functions,Azure Eventgrid,我已经开始考虑一个基于Azure函数和事件网格构建的系统的原型架构 我想要实现的是有一个单一的入口点(函数),各种外部供应商将向其发送Webhook(GET)HTTP请求。该函数的目的是向有效负载添加一些元数据,并将包(来自供应商的元数据+原始有效负载)发布到事件网格中。然后,事件网格将触发另一个函数,其目的是用状态204 HTTP代码响应原始Webhook HTTP请求 下图是架构的简化版本,事件网格当然也会将事件发布到其他函数,但为了简单起见 我目前面临的挑战是,在触发第一个函数后,来自外部
.done()
函数)。尝试在上一个函数中仅使用context.res={}
和context.done()
将不会响应供应商的原始HTTP请求
有什么想法吗?整个架构只是一个大的反模式吗?它会工作吗?或者我必须在由供应商请求触发的第一个函数中立即发送HTTP响应吗
谢谢大家!!
您混合了两种不同的模式,例如消息驱动和事件驱动。 Azure事件网格是一种分布式发布/订阅事件推送模型,其中订阅者以松散解耦的方式订阅源上的兴趣 在您的场景中,您希望以同步方式在消息交换请求-响应模式中使用事件模型。请求消息交换上下文不能通过发布/订阅事件模型流回到匿名端点,例如响应消息的实际点 但是,如何“逻辑地”集成这两种不同的模式有几个选项,下面展示了其中的一些选项:
有关在Azure功能中使用租赁Blob的更多详细信息,请参阅我的答案。您混合了两种不同的模式,例如消息驱动和事件驱动。 Azure事件网格是一种分布式发布/订阅事件推送模型,其中订阅者以松散解耦的方式订阅源上的兴趣 在您的场景中,您希望以同步方式在消息交换请求-响应模式中使用事件模型。请求消息交换上下文不能通过发布/订阅事件模型流回到匿名端点,例如响应消息的实际点 但是,如何“逻辑地”集成这两种不同的模式有几个选项,下面展示了其中的一些选项:
有关在Azure功能中使用租赁Blob的更多详细信息,请参阅我的答案。Roman,非常感谢您的详细解释!持久的功能肯定会有助于架构的发展,因此感谢您的链接。Roman,非常感谢您的详细解释!持久的功能肯定会有助于架构的开发,因此感谢您的链接。