【发布时间】:2019-12-15 08:49:42
【问题描述】:
我的应用程序正在从 IBM MQ 获取消息,并且我必须根据内容将其路由到不同的 Kafka 主题。
Kafka MQ 源连接器可以将事件从 MQ 带到 1 个 kafka 主题,我们可以在 Kafka MQ 连接器内进行基于消息的路由吗?
或者我们是否必须编写一个 KStream 应用来根据内容负载进行路由
【问题讨论】:
标签: apache-kafka apache-kafka-connect
我的应用程序正在从 IBM MQ 获取消息,并且我必须根据内容将其路由到不同的 Kafka 主题。
Kafka MQ 源连接器可以将事件从 MQ 带到 1 个 kafka 主题,我们可以在 Kafka MQ 连接器内进行基于消息的路由吗?
或者我们是否必须编写一个 KStream 应用来根据内容负载进行路由
【问题讨论】:
标签: apache-kafka apache-kafka-connect
Single Message Transform API 将使您能够根据消息的内容更改主题,但 AFAIK 尚不存在这样的主题,因此您需要自己编写。
正如您所说,另一种方法是使用 Kafka Streams 或 KSQL 进行路由。
这篇文章也可能有用:https://www.confluent.io/blog/putting-events-in-their-place-with-dynamic-routing
【讨论】:
最近写了一篇类似案例的SMT:https://github.com/rerorero/kafka-smt-jsonpath-tools
您可以使用类似 JsonPath 的表达式来路由主题,如下所示:
{
...
"transforms": "route",
"transforms.route.type": "com.github.rerorero.kafka.smt.PayloadBasisRouter$Value",
"transforms.route.replacement": "topic-{$.user.name}"
}
【讨论】: