2015-12-09 17 views
0

目前我正在写这个问题,目前还没有任何问题用[apache-kafka]和[xslt]标记。Apache Kafka上基于XSLT的转换“服务”

我是一个“经典”的面向消息的中间件(BizTalk,TIBCO,...),他只是发现卡夫卡和它的IMPRESSIVE性能数字!

,然后,我想知道在“海边的卡夫卡社区”关于如何改造它的出版和消费之间的消息负载的建议...

事实上,在我的一体化世界,生产者公开的数据结构(即格式)通常与消费者期望的数据结构(格式)完全不同。作为一个例子,作为一个生产者,我可能有一个大型机应用程序将数据格式化为COBOL副本结构,而我的前端应用程序想要使用现代JSON格式。

[以下从@ morganw09dev第一答案更新]

我喜欢@ morganw09dev的建议,但我所创作的特定消费主题有点“恼火”。为了消费“主题A”中的信息,我将“主题B”(请参阅​​@ morganw09dev的第一个答案)看作是我的前端应用程序的特定主题。换句话说,这种特殊性使“主题B”成为一个队列;-)这很好,但我想知道这样的设计是否会“伤害”一个卡夫卡原生;-)

从我的初步读物卡夫卡,很显然我还应该学习更多关于风暴的知识......但是,我发现了Flink,根据https://flink.apache.org/features.html的图表,看起来比Storm更性能,现在@ morganw09dev提到了Samza!这意味着我不知道从哪里开始;-)

最终,我想在XSLT中对我的转换进行编码,并且在Java世界中,我认为Saxon是领先的XSLT处理器之一。你知道萨克森与Storm,Flink或Samza的任何“整合”吗?或者,也许我的问题没有意义,我必须找到另一种“方式”与卡夫卡一起使用撒克逊。目前还没有任何[saxon]和任何[apache-kafka],[apache-storm],[apache-flink]和/或其他任何标签标记的问题,或[apache-samza]。

回答

1

卡夫卡本身不能用于转换数据。它仅用于存储稍后要使用的数据。

一个想法是有三部分架构。

Kafka Topic A => Transformer => Kafka Topic B 

根据你的例子。您的制作人将COBOL相关数据推送到卡夫卡主题A.您的变压器从主题A读取数据,进行必要的转换,然后将JSON输出到主题B.一旦进入主题B,前端应用程序就可以以其首选格式读取它。如果你走这条路线,Transformer可以使用Kafka的默认消费者和制作者定制,或者使用流式框架(如Apache SamzaApache Storm)来帮助处理消息。 Samza和Kafka最初都是在LinkedIn开发的,我相信自己可以很自然地一起工作。 (尽管我从未尝试过萨姆萨)。

+0

感谢您的回答!我刚刚按照你的回答编辑了我的第一个问题... – Babelabout

+0

不是编辑这个问题,而是问一个新问题可能会更好。因为现在你的问题是想要一个几乎完全不同的解决方案。 – morganw09dev

+0

糟糕...如果我的更新带来困惑,我很抱歉: - /我对使用Apache Storm的“Transformer”的答案感到满意!我只想强调一下这样一个事实,即你没有触及我原来的问题中的“XSLT”部分,因此我更新了关于“如何使用Saxon with Storm”。它更有意义吗? – Babelabout