使用Kafka流发送Http请求



我知道不建议使用kafka流发送http请求,因为外部RPC调用的阻塞性质可能会影响性能

但是,如果用例不允许我避免发送http请求,该怎么办

我正在构建一个使用输入主题的应用程序,然后对于每条消息,它将经历过滤、映射和加入kTable的各种迭代。在这些迭代结束时,结果准备为"0";交付";。

显然;递送";方法是通过http请求。我必须调用外部rest API来将这些结果发送给各个供应商。我还需要等待回复,并根据结果将交付标记为成功或失败,并将结果生成到输出主题,该主题将由其他服务用于存档。

我知道http调用会阻塞当前调用的流线程,所以我配置了一个超时,该超时严格且大大小于消费者的max.poll.interval.ms,以避免在外部API服务关闭时重新平衡。此外,超时的请求将被发送到低优先级队列,以便在以后重新尝试传递。

正如您所看到的,我真的无法避免在kafka流中进行外部RPC调用。我只是好奇,是否有更好的架构适用于这样的用例?

如果无法避免,那么另一种选择是将数据发送到某个出站"请求";主题,并写一个消费者做的请求,并产生回一个";响应";例如,带有HTTP状态代码或成功/失败指示符的主题。

然后让Streams也使用此响应主题进行加入。

不在Streams中阻塞RPC的主要原因是它对时间非常敏感,通常应尽可能避免过度增加超时。

相关内容

  • 没有找到相关文章

最新更新