sinetstream-kafka

Apache Kafka plugin for SINETStream library


License
Apache-2.0
Install
pip install sinetstream-kafka==1.9.1

Documentation

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.8以降
  • Java 11

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

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

  • CentOS 7
  • Ubuntu 20.04 LTS
  • Windows 10

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.