我正在构建一个简单的应用程序,按顺序执行 -
1)从远程IBM MQ读取消息(遗留系统仅适用于IBM MQ)
2)将这些消息写入Kafka主题
3)从同一个Kafka主题中读取这些消息并调用REST API。
4)未来可能会有其他消费者阅读此主题。
我开始知道Kafka有新的流API,在速度/简单性等方面应该比Kafka消费者更好。有人可以告诉我,如果流API非常适合我的用例和在我的过程中,我可以插入它?
答案 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。
我们不仅仅因为有技术而使用它:)