Kafka Streams用例

时间:2017-04-19 19:49:00

标签: apache-kafka apache-kafka-streams

我正在构建一个简单的应用程序,按顺序执行 -

1)从远程IBM MQ读取消息(遗留系统仅适用于IBM MQ)

2)将这些消息写入Kafka主题

3)从同一个Kafka主题中读取这些消息并调用REST API。

4)未来可能会有其他消费者阅读此主题。

我开始知道Kafka有新的流API,在速度/简单性等方面应该比Kafka消费者更好。有人可以告诉我,如果流API非常适合我的用例和在我的过程中,我可以插入它?

3 个答案:

答案 0 :(得分:8)

  

1)从远程IBM MQ读取消息(遗留系统仅适用于   IBM MQ)

     

2)将这些消息写入Kafka主题

我将(1)和(2)使用Kafka的Connect API。

  

3)从同一个Kafka主题中读取这些消息并调用REST API。

您可以使用Streams API以及Kafka的低级Consumer API,具体取决于您的喜好。

  

4)未来可能会有其他消费者阅读这个主题。

这是开箱即用的 - 一旦根据步骤2将数据存储在Kafka主题中,许多不同的应用程序和“消费者”可以独立地读取这些数据。

答案 1 :(得分:6)

与Kafka Consumer API相比,Kafka Streams API确实有一种消费记录的简单方法(例如,您不需要轮询,管理线程和循环),但它也带来了成本(例如本地数据存储 - 如果你进行状态处理)。

我想说如果您需要逐个使用记录并调用REST API,请使用Consumer API,如果您需要有状态处理,请查询主题状态等,请使用Streams API。

有关详情,请参阅此博文:https://balamaci.ro/kafka-streams-for-stream-processing/

答案 2 :(得分:0)

一旦您消耗了来自IBM MQ的消息,甚至在Kafka Topic之后,就好像您没有进行任何处理/转换。

第一个->从IBM Mq到您的Kafka Topic是一种管道, 其次->您只是在调用REST API(我假设没有任何处理)

考虑到这些事实,似乎非常适合使用Simple Consumer。

我们不仅仅因为有技术而使用它:)