我正在尝试为流式分析设计流式架构。 要求:
我正在探索Kafka和Kafka Streams进行流处理和RT / NRT实时消息传递。 我的问题是:我需要在流处理期间对外部系统(信息提供者,MongoDB等)执行一些查询。根据外部系统特性,这些查询可以是同步和异步请求 - 响应。
我已阅读this post解释如何在处理过程中加入KStream和KTable,这非常有趣,但在这种情况下,KTable不依赖于来自KStream的输入参数,它只是表的流表示。
我需要在外部系统中查询KStream消息,将一些消息字段作为查询参数传递,并用查询结果丰富流消息,然后将丰富的消息发布到输出主题。 是否有任何整合的范例来设计此流处理? 有什么特别的技术我最好用吗?请记住,查询可以是同步和异步。
我还想为这些外部系统设计包装器,实现一种可从Kafka Stream处理中调用的分布式RPC。 你能建议任何技术/框架吗? 我正在考虑Akka演员分发查询响应者,但我无法理解Akka是否适合请求 - 响应范例。
由于
答案 0 :(得分:11)
关于外部系统的查询模式,您有多种可能性:
KTable
以执行KStream-KTable
查找联接。 KStream
方法#mapValues()
,#map()
或更低级别的方法,例如#transform()
或#process()
。因此,您手动打开与外部系统的连接,并为您处理的每个记录发出查询查询。
#mapValues()
来实现此目的)比较有关偏移提交的流中故障处理的问题:How to handle error and don't commit when use Kafka Streams DSL