我正在研究MQTT kafka源连接器。消息是 来自MQTT Publisher然后连接器将订阅MQTT 主题(/ iot / sensor /#),这些消息将发布到Kafka 经纪人。但同样,如果我再次停止连接器 重新启动连接器然后连接器消耗来自的消息 mqtt broker但是缺少一些mqtt消息(如果我发送1000 来自MQTT发布者的消息,而不是在kafka中获取1000个消息 我给mqtt ClientID是唯一名称。我设置了mqtt paho客户端 使用setCleanSession = false,QOS = 1并使用 MqttDefaultFilePersistence(DIR)。 Rabbitmq版本是3.6.10
伪代码
Public class MyTask extends SourceTask implements MqttCallback{
//Initialzied the queue
@Override
public void start(Map<String, String> map) {
//set necessary properties and configuration
//set the required mqttConnect options and mqtt broker
Paho mClient = new MqttClient(mqttURl,Unique ClientID, new MqttDefaultFilePersistence(DIR))
mClient.connect(RequiredConnectProperties)
}
@Override
public List<SourceRecord> poll() throws InterruptedException {
//poll the queue
// publish messages to kafka
}
@Override
public void stop() {
//disconnect the mqtt paho clent
}
@Override
public void messageArrived(String mqtttopic, MqttMessage message) throws Exception {
//add the messages to queue
}
}