English

SINETStream ユーザガイド

Android版のSINETStream設定ファイル

概要

Java版やPython版とは異なり、Android版のSINETStreamライブラリは足回りのメッセージングシステムとして(現状では) Paho MQTT Android のみを利用する。 ここでの設定内容はPahoのMqttConnectOptionsに反映される。 オプション扱いの設定項目が省略された場合、MqttConnectOptions組み込みの値が使われる。

サービスによる記述内容のブロック化

   sinetstream_config.yml
   +------------------------+
   |  +------------------+  |
   |  | service #1       |  |
   |  |   ...            |  |
   |  +------------------+  |
   |      ...               |
   |  +------------------+  |
   |  | service #n       | <---- target service
   |  |   ...            |  |
   |  +------------------+  |
   +------------------------+

設定サーバとの連携

SINETStream 1.6版より、SINETStreamの設定情報を一元管理する設定サーバを導入した。

従来の「Android端末ごとにSINETStream設定ファイルを用意する」運用の他に、 「システム管理者が設定サーバに登録した内容をREST-API経由でAndroid端末に取り込む」運用も可能とする。 前者の運用方法ではAndroid版のSINETStreamライブラリは単にYAML形式のローカルファイルを読み込むだけである。後者ではAndroid版のSINETStreamライブラリが設定サーバからJSONデータをダウンロードしてメモリ上でのみ扱われる。

設定サーバからダウンロードされるJSONデータ構造の概略を以下に示す。 このうち下図右端に示す部分が従来のSINETStream設定ファイル相当(JSON形式で表現)となる。 設定サーバは、複数の情報ブロック(基本情報としてのSINETStream設定、SSL/TLS証明書のような添付情報、公開鍵のような秘匿情報)を一括して管理できる。 基本情報以外の付加情報がある場合、それぞれオプション要素(attachmentssecrets)としてJSONデータに含まれるとともに、基本情報部分も拡張項目が設定される。 SINETStream設定における記法のバージョン識別のため、下図中央に示すヘッダ情報が含まれる。ただしJSONデータに添付情報や秘匿情報を含まず、かつ従来のSINETStream 1.6版に準じた記法に閉じる場合はヘッダ情報が省略される。

    JSON data                 config part        sinetstream_config
   +---------------+     - - +----------+        part
   | name          |    /    | (header) |
   +---------------+ - -     +----------+ - - - +----------------+
   | config        |         | config   |       | +------------+ |
   +---------------+ - - - - +----------+ - -   | | service #1 | |
   | (attachments) |                         \  | |   ...      | |
   +---------------+                          \ | +------------+ |
   | (secrets)     |                            +----------------+
   +---------------+

設定項目一覧

基本的なパラメータ

大分類 中分類 小分類 値域 必須 備考
service     String 任意 o サービス識別子
  type   String {“mqtt”} o 現状では"mqtt"のみ
  brokers   String hostport1[,hostport2[, …]] o 複数要素の場合はコンマで連結する

APIのパラメータ

大分類 中分類 小分類 値域 必須 備考
  topics   String topic1[,topic2[, …]] o 複数要素の場合はコンマで連結する
  client_id   String Any   省略時はMQTTライブラリ内部で自動生成する
  consistency   String {“AT_MOST_ONCE”,”AT_LEAST_ONCE”,”EXACTLY_ONCE”}   省略時は”AT_LEAST_ONCE”

SSL/TLSに関するパラメータ

形式1: SSL/TLS証明書の使用方法が限定的

大分類 中分類 小分類 値域 必須 備考
  tls   Boolean {true,false}   省略時はfalse

形式2: Androidのキーチェインに格納されたSSL/TLS証明書を使う

大分類 中分類 小分類 値域 必須 備考
  tls protocol String {TLSv1.2,TLSv1.3}   省略時は”TLSv1.2”
  tls client_certs Boolean {true,false}   省略時はfalse
  tls server_certs Boolean {true,false}   省略時はfalse
  tls check_hostname Boolean {true,false}   省略時はtrue

形式3: 設定サーバからダウンロードしたSSL/TLS証明書を使う

大分類 中分類 小分類 値域 必須 備考
  tls protocol String {TLSv1.2,TLSv1.3}   省略時は”TLSv1.2”
  tls keyfilePassword String Any   クライアント証明書(xxx.pfx)のパスワード
  tls check_hostname Boolean {true,false}   省略時はtrue

MQTT固有のパラメータ

基本

大分類 中分類 小分類 値域 必須 備考
  clean_session   Boolean {true,false}   省略時はtrue
  protocol [1]   String {“MQTTv31”,”MQTTv311”,”DEFAULT”}   省略時は”DEFAULT”
  transport   String {“tcp”,”websocket”}   省略時は”tcp”
  qos   Integer {0,1,2}   省略時は1
  retain   Boolean {true,false}   省略時はtrue
  max_inflight_messages_set inflight Integer 正整数   省略時は10
  reconnect_delay_set max_delay Integer 正整数   省略時は128000
  connect keepalive Integer 正整数   省略時は60
  connect automatic_reconnect Boolean {true,false}   省略時はfalse
  connect connection_timeout Integer 正整数   省略時は30
  mqtt_debug [2]   Boolean {true,false}   Default: false

[1]: 項目protocolの別名としてmqtt_versionを使っても良い。 両者を同時に指定した場合、protocolを採用する。

[2]: 開発者向け。MqttAndroidClientのデバッグトレースの有無を設定する。

MQTTのユーザ認証に関するパラメータ

大分類 中分類 小分類 値域 必須 備考
  username_pw_set username String Any    
  username_pw_set password String Any    

MQTTのLWT (Last Will and Testament) に関するパラメータ

大分類 中分類 小分類 値域 必須 備考
  will_set topic String Any o  
  will_set payload String Any o  
  will_set qos Integer 正整数 o  
  will_set retain Boolean {true,false} o  

MQTTのSSL/TLSパラメータ