Build and Run Project Components
Source Code
Complete source code used for the GridDB Kafka and MQTT Application can be downloaded from the following:
Download: griddb-kafka-mqtt-application.tar.gz
Mqtt Client
To test the client you will need to have the Kafka connector and mqtt-kafka-connector set up and running beforehand.
From the mqttclient directory, you can run the following commands to build and start the simple mqttclient. The mqttclient mimics a sensor reading and uses libmosquitto to publish the data to the mosquitto server where it can be read by subscribers to that server such as our Kafka mqtt-source-connector.
$ make $ ./mqttclient
If all components are operating correctly, the kafka-consumer process will be running and you will see data in this form
{"schema": {"type":"string","optional": false}, "payload": "{light":42.0 , "sound": 24.0 }" }
This means the mosquitto client program can successfully publish its data and send it to the kafka process through the connector
GridDB Sink Connector
To build the sink connector, gridstore.jar needs to be placed into a local maven repository.
$ cp /usr/share/java/gridstore.jar ~/.m2/repository/com/toshiba/mwcloud/gs/gridstore/3.0/gridstore-3.0.jar
Now, you can build the connector:
$ ./gradlew build
To run the connector, you’ll also need to download the jsonic JSON parser and include it and the connector JAR and gridstore.jar in your CLASSPATH
.
$ export CLASSPATH=${CLASSPATH}:/usr/share/java/gridstore..jar:$PWD/build/libs/griddb-kafka-sink.jar:$PATH_TO_JSONIC/jsonic-1.3.0.jar
Now you can run the connector:
$ connect-standalone.sh connect-standalone.properties griddb-sink.properties
If the Sink is able to connect GridDB and the other components are still running normally, then the terminal should output messages such as:
Putting Timestamp (Current Time and Date) Light : 42 Sound : 24 into Test
GridDB Data Viewer
Chang into your griddb-kafka-sink repository and run
$ export CLASSPATH=${CLASSPATH}:/usr/griddb-3.0.1/bin/gridstore-3.0.1.jar $ cd utils $ javac DataViewer/*.java $ java DataViewer/DataViewer 239.0.0.1 31999 YOUR_CLUSTER_NAME admin password
If the kafka-consumer, the kafka-mqtt-connector, the griddb-kafka-sink, and mqttclient processes are all running properly, then this terminal should print the output of what timestamps and data the mqttclient added to the database following the below format:
Timestamp Mon Jun 19 16:10:10 EDT Light: 42 Sound: 24