MQTT主题和kafka主题映射

时间:2019-11-28 06:28:21

标签: apache-kafka mqtt apache-kafka-connect mosquitto

由于我在当前组织的远程信息处理中有一个用例,因此我开始学习MQTT。我想将MQTT代理(mosquitto)消息集成到我的kafka中。

由于每辆车都在一个组织内的MQTT经纪人中按其自身主题发送数据,所以我想将所有这些数据推送到kafka中。现在我知道不建议在kafka中创建太多主题(超过一百万个)。另外,我也不想将所有车辆数据保存在一个kafka主题中,因为稍后我希望将所有这些数据放入S3中​​,并通过车辆ID进行区分。

如何在不进行kafka太多主题的情况下实现这一目标。一种方法是,kafka的使用者将事件隔离并放入s3中,但我相信S3中将有很多小文件。

1 个答案:

答案 0 :(得分:2)

通常,如果您具有相同的逻辑实体,则将使用相同的主题。

您可以使用MQTT plugin for Kafka Connect将数据从MQTT流传输到Kafka,并使用Kafka Connect的单一消息转换onPermissionRequest来修改写入消息的主题名称,并使用其他SMT来修改消息。键。这样,您就可以将所有消息归入一个主题,并根据车辆ID进行划分。那可能是存储它的最好方法。

从那里,您可以根据需要使用数据。当将其流式传输到S3时,您可以使用Kafka Connect S3 sink,并且正如cricket_007所述,如果只是担心数据量,请按时间划分数据。如果要将消息路由到不同的存储桶或同一存储桶的区域,则可以使用流处理(例如Kafka Streams / ksqlDB)对主题进行预处理,以填充其他主题。

有关MQTT连接器的示例,请参见here