1.7. 送信バッファと再送制御

ICE CoreはMQTTプロトコルによるデータ送信を行う際、バックエンドとの通信が一時的に遮断された場合に、接続先への再接続や再送を行います。 バックエンドのMQTT Brokerがダウンしている間や、MQTTコネクション切断中にエミットされたデータが送信バッファに蓄積されます。

また、送信バッファの上限は設定によって変更可能で、エッジ―バックエンド間の通信回線品質に応じて再送可能なデータ量を調整する事が出来ます。 この送信バッファに蓄積されたデータの再送時、データの送信順序は保証されません。

overview

Operability Add-onを利用すると、クラウドアダプタからMQTT BrokerへのMQTTメッセージ送信順序がデータ格納順序と同じになるように制御することが可能となります。
また、送信バッファ内に蓄積されるメッセージに有効期限を設定し、時間の経過によって再送待ちメッセージを破棄することができます。

1.7.1. 機能一覧

主な機能を以下に列挙します。

  • MQTT送信バッファのメッセージ数制限

    送信バッファに蓄積するメッセージの上限を設定します。

  • MQTTの送信順序保証 【OP-Addon】

 MQTTの送信順序をクラウドアダプタへのデータ格納順序と同じにする機能です。

  • MQTT送信バッファの有効期限設定 【OP-Addon】

 メッセージの有効期限設定を持った送信バッファを利用可能です。

1.7.2. MQTTの送信順序保証 【OP-Addon】

ICE CoreのMQTT用クラウドアダプタを使用している場合(Destination設定のtypeにmqttを指定)に、メッセージの送信順序を保証する機能です。
この機能を利用することで、デバイスアダプタやエッジアプリケーション、Node-REDノードからバックエンドに送信したデータを順序通りに送信することが可能となります。 MQTTのコネクション切断中にエミットされたデータに対しても順序は保証され、コネクション再接続時に順序が入れ替わらないように制御します。

また、メッセージ送信間隔の指定が可能となっています。

注釈

本機能はQoS 1のメッセージにのみ有効です。

設定方法については、Operability Add-onに関連する設定を参照してください。

注釈

本機能有効時は複数メッセージを並列に送信することはなく、MQTT Brokerからのpuback受信をもって、シーケンシャルに次のメッセージ送信を行います。そのため、機能無効時と比較してスループットやレイテンシが低下する可能性があります。高負荷時には、送信バッファが溢れる可能性もありますので、送信バッファのメッセージ数上限や有効期限等の設定にご注意ください。

1.7.3. MQTT送信バッファの有効期限設定 【OP-Addon】

ICE CoreのMQTT用クラウドアダプタを使用している場合、デバイスアダプタやエッジアプリケーション、Node-REDのice backend outノードからICE Coreに投入されたデータは、クラウドアダプタの送信バッファに格納されます。
バックエンドのMQTT Brokerから受領応答を受け取ると、送信バッファから該当するデータが削除されますが、MQTT Brokerがダウンしている場合や、コネクション切断中などの理由で受領応答が無い場合、送信バッファにデータが蓄積されたままになります。

本機能を利用することで、送信バッファに格納されたメッセージに有効期限を設定することができ、送信バッファに格納されてから一定時間経過したメッセージを自動で削除することが可能となります。

設定方法については、Operability Add-onに関連する設定を参照してください。

送信バッファからメッセージが削除されるのは下記のケースです。

  1. 送信バッファに格納されたメッセージ数が上限を超えた場合
  2. メッセージの有効期限が切れた場合

これらのケースでメッセージが削除されたとき、イベント通知機能によりデバイスアダプタやエッジアプリケーション、Node-REDノードで削除を検知できます。必要に応じて、イベント通知機能をご利用ください。

注釈

本機能はメッセージの永続化を行うものではないため、ICE Coreがダウンした場合には送信バッファに格納されていたメッセージは失われます。