【问题标题】:XSLT based transformation "service" on top of Apache KafkaApache Kafka 之上基于 XSLT 的转换“服务”
【发布时间】:2015-12-09 22:10:02
【问题描述】:

在我写这个问题的那一刻,没有(还)任何用 [apache-kafka] 和 [xslt] 标记的问题。

我是一个“经典”的面向消息的中间件(BizTalk、TIBCO 等),刚刚发现 Kafka 及其令人印象深刻的性能数据!

然后,我想知道“Kafka-community”关于如何在发布和消费之间转换消息有效负载的建议......

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

[根据@morganw09dev 的第一个答案更新]

我喜欢@morganw09dev 的提议,但我对创建特定于消费者的主题有点“恼火”。我将“主题 B”(参见 @morganw09dev 的第一个答案)视为我的前端应用程序的特定主题,以便使用“主题 A”中的信息。换句话说,这种特殊性使“主题 B”成为一个队列 ;-) 很好,但我想知道这样的设计是否不会“伤害”Kafka-native ;-)

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

最后,我想在 XSLT 中编写我的转换代码,并且在 Java 世界中,我认为 Saxon 是领先的 XSLT 处理器之一。您知道 Saxon 与 Storm、Flink 或 Samza 的任何“集成”吗?或者,也许我的问题没有意义,我必须找到另一种“方式”来使用 Saxon 和 Kafka。

在我写这篇评论的那一刻,(还)没有任何问题被标记为 [saxon] 和任何 [apache-kafka]、[apache-storm]、[apache-flink] 和/或[apache-samza]。

【问题讨论】:

    标签: xslt apache-kafka publish-subscribe middleware saxon


    【解决方案1】:

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

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

    Kafka Topic A => Transformer => Kafka Topic B
    

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

    【讨论】:

    • 感谢您的回答!根据您的回答,我刚刚编辑了我的初始问题...
    • 与其编辑这个问题,不如问一个新问题。因为现在您的问题是想要一个与原来几乎完全不同的解决方案。
    • 糟糕...如果我的更新带来了混乱,我很抱歉:-/ 我仍然对您使用 Apache Storm 拥有“Transformer”的回答感到满意!我只是想强调一个事实,即您没有触及我最初问题的“XSLT”部分,因此我更新了关于“如何在 Storm 中使用 Saxon”。更有意义吗?
    • 这是有道理的。这是我第一次听说 XSLT 或 Saxon,所以我无法回答这些部分。一个全新的问题也可能会引起人们的更多关注(基于个人意见)。因此,编辑原始问题与提出新问题各有利弊。
    • 非常感谢您迄今为止的帮助。我将提出一个关于 Kafka 和 Saxon 集成的新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2020-12-15
    • 1970-01-01
    • 2012-02-06
    • 2018-07-19
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多