Links
- Tutorial
- User Guide
- Performance measurement of SINETStream
- Developer guide
- Build SINETStream server
- Config Server
- Bridge
- Update log
Concept of a messaging system
The SINETStream is a messaging system that adopts a topic-based publish/subscribe model. It provides an abstraction layer of Broker, which in turn employs Kafka or MQTT as its backend.
The SINETStream calls the publisher as Writer
, and the subscriber as Reader
, respectively.
Broker’s configuration and communication parameters are abstracted as service
in the SINETStream.
Writers and Readers can communicate with any Broker just by specifying a service
.
A logical channel in Broker is called as topic
.
Writers and Readers send/receive a message specifying a topic, allowing different types of messages to be transferred through a Broker.
Directory structure
- README.en.md
- python/
- README.en.md
- Build procedure of the Python version of SINETStream
- src/
- Common files of the Python version of SINETStream
- plugins/
- broker/
- kafka/
- Kafka-specific files of the Python version of SINETStream
- mqtt/
- MQTT-specific files of the Python version of SINETStream
- s3/
- S3-specific files of the Python version of SINETStream
- kafka/
- value_type/
- image/
- Support for messages with image payload
- image/
- compression/
- lz4/
- Sample implementation of LZ4 compression
- lz4/
- broker/
- sample/
- Sample programs
- README.en.md
- java/
- README.en.md
- Build procedure of the Java version of SINETStream
- api/
- Common files of the Java version of SINETStream
- plugin-kafka/
- Kafka-specific files of the Java version of SINETStream
- plugin-mqtt/
- MQTT-specific files of the Java version of SINETStream
- plugin-s3/
- s3-specific files of the Java version of SINETStream
- plugin-type-image/
- Support for messages with image payload
- plugin-comp-lz4/
- Sample implementation of LZ4 compression
- sample/
- Sample programs
- README.en.md
- docs/
- userguide/
- tutorial/
- developer_guide/
Operating environment
Python/Java version
The Python/Java SINETStream API
is implemented with following programing
languages.
- Python 3.9 or later
- Java 11
The Python/Java SINETStream API
supports the following messaging systems.
- Apache Kafka 3.8
- MQTT v3.1, v3.1.1, v5.0
- Eclipse Mosquitto v2.0.15
- S3
- AWS S3
- MinIO
Android version
The Android SINETStream API
is implemented with following programing
languages.
- Java 11
- Kotlin 1.7.10
The Android SINETStream API
supports the following messaging systems.
- MQTT v3.1, v3.1.1
Note
The GitHub repository eclipse/paho.mqtt.android of theEclipse Paho Android Client
project seems to have unmaintained for years. Due to the system behavior changes that have introduced in Android 12, using thePaho
library on Android 12+ environment causes runtime error. Some volunteers have posted bugfix patches to the GitHub repository but noghing have happened so far. Therefore, weSINETStream
project team have decided to use our ownPahoMqttAndroid-bugfix
library as a temporary fix.
The Android SINETStream API
runs on following operating system.
- Android 8.0 (API level 26) or higher
This restriction (Android 8.0+) comes from implementation issues of the
Apache Avro
library, which is used asserializer/deserializer
for theSINETStream messages
.
Preparation
Python/Java version
The Python/Java SINETStream API
uses Kafka or MQTT as a backend messaging
system of Broker.
Therefore, you need to install one of these messaging systems along with SINETStream.
The tutorial package utilizes some Docker containers to install the
required software components,
i.e., SINETStream, Kafka, and MQTT.
- Kafka broker settings
- MQTT broker settings
- Installing SINETStream
- Python:
pip3 install --user sinetstream-kafka sinetstream-mqtt
- Java: Please refer to the Java version of README.
- Python:
Please refer to Quick Start Guide (Python/Java) using Docker containers.
Android version
The Android SINETStream API
provides client functionality
(Writer, Reader), with the support of MQTT messaging system.
Therefore, the peer Broker with an Android SINETStream client must
use MQTT only.
Note that you can use the MQTT broker part as is, which has installed for the Python/Java SINETStream backend system.
Please refer to Quick Start Guide (Android) using a Docker container.