Skip to content

nii-gakunin-cloud/sinetstream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
NII Gakunin Cloud
Mar 28, 2025
d6a0897 · Mar 28, 2025
May 3, 2021
Mar 25, 2021
Mar 25, 2021
May 4, 2021
Mar 28, 2025
Oct 21, 2024
Oct 21, 2024
May 24, 2023
Mar 27, 2024
Dec 23, 2019
Oct 8, 2020
Aug 26, 2019
Oct 21, 2024
Jun 24, 2020
Jun 28, 2022
Sep 20, 2022
Oct 21, 2024
Oct 21, 2024
Jun 12, 2020
Feb 8, 2024
Mar 27, 2024

Repository files navigation

permalink
README.html

English

リンク

メッセージングシステムの概念

SINETStreamは トピックベースのPublish/Subscribeモデル のメッセージングシステムである。 Brokerを実現するバックエンドのメッセージングシステムとしてKafkaまたはMQTTを利用している。

SINETStreamではPublisherをWriterと呼び、SubscriberをReaderと呼ぶ。

メッセージングシステムの概念図

Brokerの構成情報やBrokerとの通信パラメータをまとめたものをSINETStreamではサービスと呼ぶ。 WriterやReaderはサービスを指定するだけでブローカーに接続してメッセージの送受信ができる。

トピックとはブローカーにおける論理的なチャンネルであり、 Writer/Readerはトピックを指定してメッセージの送受信を行うことで異なる種類のメッセージ配信を1つのブローカー上で行える。

ファイル構成

  • README.md
    • このファイル
  • python/
    • README.md
      • Python版SINETStreamのビルド手順
    • src/
      • Python版SINETStreamの共通部分
    • plugins/
      • broker/
        • kafka/
          • Python版SINETStreamのKafka固有部分
        • mqtt/
          • Python版SINETStreamのMQTT固有部分
        • s3/
          • Python版SINETStreamのS3固有部分
      • value_type/
        • image/
          • 画像メッセージのサポート
      • compression/
        • lz4/
          • LZ4圧縮のサンプル実装
    • sample/
      • サンプルプログラム
  • java/
    • README.md
      • Java版SINETStreamのビルド手順
    • api/
      • Java版SINETStreamの共通部分
    • plugin-kafka/
      • Java版SINETStreamのKafka固有部分
    • plugin-mqtt/
      • Java版SINETStreamのMQTT固有部分
    • plugin-s3/
      • Java版SINETStreamのs3固有部分
    • plugin-type-image/
      • 画像メッセージのサポート
    • plugin-comp-lz4/
      • LZ4圧縮のサンプル実装
    • sample/
      • サンプルプログラム
  • docs/

動作環境

Python/Java版

Python/Java版のSINETStream APIは、以下のプログラム言語で実装される。

  • Python 3.9以降
  • Java 11

Python/Java版のSINETStream APIは、以下のメッセージングシステムに対応する。

Android版

Android版のSINETStream APIは、以下のプログラム言語で実装される。

  • Java 11
  • Kotlin 1.7.10

Android版のSINETStream APIは、以下のメッセージングシステムに対応する。

注意
Eclipse Paho Android ClientプロジェクトのGitHubリポジトリeclipse/paho.mqtt.android は何年も放置状態となっている。 Android 12で導入されたシステム挙動変更 の影響により、Android 12以降の環境でPahoのライブラリを使うと実行時エラーが発生する。 有志が上記GitHubに修正パッチを投稿しているが一向に反映されないため、 SINETStreamプロジェクトで独自に改修した版PahoMqttAndroid-bugfixを使うことにする。

Android版のSINETStream APIが対応するOS条件は以下の通り。

  • Android 8.0 (API level 26) 以降

この制約条件はSINETStreamメッセージの「シリアライザ/デシリアライザ」 機能で用いるApache Avroライブラリの実装上の都合に依るものである。

準備

Python/Java版

SINETStreamでは、Brokerを実現するバックエンドのメッセージングシステムとしてKafkaまたはMQTTを利用している。 そのため、SINETStreamとともに、これらのメッセージングシステムのどちらかをインストールする必要がある。 チュートリアルパッケージでは、Dockerコンテナを利用して必要なソフトウェア一式(SINETStream, Kafka, MQTT)をインストールする方法を用意している。

  1. Kafkaブローカーの設定
  2. MQTTブローカーの設定
  3. SINETStreamのインストール
    • Python: pip3 install --user sinetstream-kafka sinetstream-mqtt
    • Java: Java版READMEを参照

Dockerコンテナをつかった クイックスタートガイド (Python/Java版) も参考のこと。

Android版

Android版のSINETStream APIは、メッセージングシステムのうちMQTTのみに対応し、 クライアント機能(WriterReader)を提供する。 このため、Android版のSINETStreamクライアントと対向するバックエンド側のBrokerはMQTT一択となる。 上記Python/Java版の記述内容に沿って導入したバックエンドに関して、 MQTTブローカー部分をAndroid対向用に流用することで構わない。

Dockerコンテナをつかった クイックスタートガイド (Android版) も参考のこと。

ライセンス

Apache License, Version 2.0.