我有一个API调用,假设它是一个表单提交。
- 〉我想给填写表单的用户发送电子邮件
- 〉我想用一堆其他数据来分析表单响应
- 〉向管理员发送通知
这样我可能有n个事件要根据特定的表单触发(可能有很多类型的表单,我想根据提交的表单触发)。我该怎么做?
最初,我想在一个util文件中包含执行这些触发器的所有逻辑,并基于表单来运行这些函数。但我能感觉到它的伸缩性不好。后来我找到了Kafka,并认为我可以适合我的用例。
我可以把所有的触发器作为一个主题,在消费者中,我将有逻辑来执行每个主题。一旦表单被填充,生产者,即表单API将发送消息(表单数据)到它订阅的所有主题,Kafka将处理剩下的事情。
这听起来像是一个好的解决方案吗?或者我只是在重新发明轮子?另外,如果新的触发器不断出现,比如我的客户(人类XD)请求这样做,并在提交表单时进行验证/分析,那么我如何在消费者API中高效地添加逻辑来处理该触发器。
或者我需要考虑一个分布式系统来处理这个问题吗?
1条答案
按热度按时间6l7fqoea1#
当然,HTTP服务器可以在表单提交时做任何它想做的事情,包括调用远程HTTP服务而不是使用任何队列。但是由于Kafka是异步的,它可能不适合用于请求-回复有效负载,例如表单验证。
您不需要在生产者代码中“添加消费者触发器”。您只需要生产主题,就可以了。消费者从您为其配置的主题中进行轮询,并相应地处理数据,而不管这些主题中产生了什么