在消费端处理Kafka流时调用外部rest API

在消费端处理Kafka流时调用外部rest API,rest,apache-kafka,Rest,Apache Kafka,让我们讨论一种情况 消费者收到Kafka流,流中的消息需要根据一些验证器微服务和Enricher API调用进行充实和验证。它还将消息持久化到数据库中 流动是这样的- Kafka流消费者->每条消息->调用规则验证程序Rest API->调用丰富API->通过持久性Rest API保存到DB 因为在调用最终的持久性微服务API之前,所有REST调用都是同步的,REST调用是顺序的 显然,Kafka流消费者获得高吞吐量消息 如何通过编码实现这一点?不要使用REST 如果可以完全控制管道的每一部分,

让我们讨论一种情况

消费者收到Kafka流,流中的消息需要根据一些验证器微服务和Enricher API调用进行充实和验证。它还将消息持久化到数据库中

流动是这样的- Kafka流消费者->每条消息->调用规则验证程序Rest API->调用丰富API->通过持久性Rest API保存到DB

因为在调用最终的持久性微服务API之前,所有REST调用都是同步的,REST调用是顺序的

显然,Kafka流消费者获得高吞吐量消息

如何通过编码实现这一点?

不要使用REST

如果可以完全控制管道的每一部分,请使用Kafka Streams Processor API获取3个中间主题之间的预数据库输出,然后使用Kafka Connect接收到数据库

这将扩展到比RESTAPI能够处理的负载更好的负载

如果您没有控制权,则必须创建一个任务/请求队列主题,下一个API调用将从中获取来自另一个使用者的请求,并且必须等待,直到第一个API响应来自前一个使用者