在我写这个问题的时候,还没有(还没有)任何问题同时标记了[apache kafka]和[xslt]。
我是一个“经典的”面向消息的中间件(biztalk,tibco,…)的人,他刚刚发现了kafka及其令人印象深刻的性能数据!
然后,我想知道“Kafka社区”关于如何在其发布和消费之间转换消息负载的建议是什么。。。
实际上,在我的集成世界中,生产者公开的数据结构(即格式)通常与消费者期望的数据结构(格式)完全不同。例如,作为一个生产者,我可能有一个大型机应用程序以cobol copybook结构格式化数据,而我的前端应用程序希望使用现代json格式。
[根据@morganw09dev的第一个答案进行更新]
我喜欢@morganw09dev的提议,但我对创建特定于消费者的主题有点“恼火”。我将“topic b”(参见@morganw09dev的第一个答案)视为我的前端应用程序的特定主题,以便使用“topic a”中的信息。换句话说,这种特殊性使“topic b”成为一个队列;-)这很好,但我想知道这样的设计是否不会“伤害”Kafka本地人;-)
从我对Kafka的初步阅读,很明显,我也应该了解更多有关风暴。。。但是,我发现了Flink,根据https://flink.apache.org/features.html,看起来要比风暴表现的好得多,现在@morganw09dev提到了samza!这意味着我不知道从哪里开始;-)
最后,我想用xslt编写我的转换代码,在java世界中,我认为saxon是领先的xslt处理器之一。你知道撒克逊和斯托姆、Flink或萨姆扎有什么“结合”吗?或者,也许我的问题没有意义,我必须找到另一种“方式”来使用与Kafka撒克逊。
在我写这篇评论的那一刻,还没有任何问题同时被标记为[saxon]和[apache kafka]、[apache storm]、[apache flink]和/或[apache samza]。
1条答案
按热度按时间jhdbpxl91#
Kafka本身不能用来转换数据。它只用于存储以后使用的数据。
一个想法是拥有一个由三部分组成的架构。
根据你的例子。您的制作人将cobol相关数据推送到kafka topic a。您的转换器读取主题a,进行必要的转换,然后将json输出到主题b。一旦进入主题b,前端应用程序就可以以其首选格式读取它。如果您这样做,那么可以使用kafka的默认消费者和生产者定制transformer,或者使用apachesamza或apachestorm之类的流框架来帮助处理消息传递。samza和kafka最初都是在linkedin开发的,我相信他们在一起工作是很自然的(尽管我从未试过桑扎)。