如何为iot hub的每个新制作人添加新的Kafka主题?

fkaflof6  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(316)

我正在开发azure云解决方案。我使用连接到kafka的iot hub来处理来自各种iot设备的数据。我面临的是来自多个设备的所有数据都存储在同一主题中。但是,我想将连接到iot hub的每个设备的数据处理到kafka中的特定主题(每个设备都有自己的kafka主题)
toketi“kafka connect source connector for azure iot hub”提供以下配置文件(边缘节点)

connector.class=com.microsoft.azure.iot.kafka.connect.source.IotHubSourceConnector
name=AzureIotHubConnector
tasks.max=1
Kafka.Topic=IotTopic
IotHub.EventHubCompatibleName=iothub-toketi
IotHub.EventHubCompatibleEndpoint=sb://iothub-001.servicebus.windows.net/
IotHub.AccessKeyName=service
IotHub.AccessKeyValue=4KsdfiB9J899a+N3iwerjKwzeqbZUj1K//KKj1ye9i3=
IotHub.ConsumerGroup=$Default
IotHub.Partitions=4
IotHub.StartTime=2016-11-28T00:00:00Z
IotHub.Offsets=
BatchSize=100
ReceiveTimeout=60

一个主题可以存储来自多个设备的所有数据,但我希望在来自设备的数据之间进行隔离
任何解决方案或想法!!
谢谢

uinbv5nw

uinbv5nw1#

解决方案之一是使用smt(单消息转换)。
源连接器流包含几个步骤:
从外部源轮询数据为 List<SourceRecord> 转换每条消息( SourceRecord )使用已定义的smt(如果未定义转换,则可以跳过
转换键和值 SourceRecord 到字节数组。
通过发送消息 KafkaProducer Kafka
kafka connect根据 SourceRecord::topic 现场。使用smt可以设置适当的主题值。
纯粹的apache-kafka-connect没有这种转换。如果您使用的是合流平台,那么可以使用一些附加的转换。要提取主题名,可以使用extracttopic。它有属性,即 field 关于smt的整个概念的更多信息可以在ApacheKafka网页或confluent网页上找到

相关问题