送信バッファと再送制御¶
ICE CoreはMQTTプロトコルによるデータ送信を行う際、バックエンドとの通信が一時的に遮断された場合に、接続先への再接続や再送を行います。 バックエンドのMQTT Brokerがダウンしている間や、MQTTコネクション切断中にエミットされたデータが送信バッファに蓄積されます。
また、送信バッファの上限は設定によって変更可能で、エッジ―バックエンド間の通信回線品質に応じて再送可能なデータ量を調整する事が出来ます。 この送信バッファに蓄積されたデータの再送時、データの送信順序は保証されません。

Operability Add-onを利用すると、クラウドアダプタからMQTT BrokerへのMQTTメッセージ送信順序がデータ格納順序と同じになるように制御することが可能となります。
また、送信バッファ内に蓄積されるメッセージに有効期限を設定し、時間の経過によって再送待ちメッセージを破棄することができます。
機能一覧¶
主な機能を以下に列挙します。
-
MQTT送信バッファのメッセージ数制限
送信バッファに蓄積するメッセージの上限を設定します。 -
MQTTの送信順序保証
MQTTの送信順序をクラウドアダプタへのデータ格納順序と同じにする機能です。 -
MQTT送信バッファの有効期限設定
メッセージの有効期限設定を持った送信バッファを利用可能です。
MQTTの送信順序保証¶
ICE CoreのMQTT用クラウドアダプタを使用している場合(Destination設定のtypeにmqttを指定)に、メッセージの送信順序を保証する機能です。
この機能を利用することで、デバイスアダプタやエッジアプリケーション、Node-REDノードからバックエンドに送信したデータを順序通りに送信することが可能となります。
MQTTのコネクション切断中にエミットされたデータに対しても順序は保証され、コネクション再接続時に順序が入れ替わらないように制御します。
また、メッセージ送信間隔の指定が可能となっています。
Note
本機能はQoS 1のメッセージにのみ有効です。
設定方法については、Operability Add-onに関連する設定を参照してください。
Note
本機能有効時は複数メッセージを並列に送信することはなく、MQTT Brokerからのpuback受信をもって、シーケンシャルに次のメッセージ送信を行います。そのため、機能無効時と比較してスループットやレイテンシが低下する可能性があります。高負荷時には、送信バッファが溢れる可能性もありますので、送信バッファのメッセージ数上限や有効期限等の設定にご注意ください。
MQTT送信バッファの有効期限設定¶
ICE CoreのMQTT用クラウドアダプタを使用している場合、デバイスアダプタやエッジアプリケーション、Node-REDのice backend outノードからICE Coreに投入されたデータは、クラウドアダプタの送信バッファに格納されます。
バックエンドのMQTT Brokerから受領応答を受け取ると、送信バッファから該当するデータが削除されますが、MQTT Brokerがダウンしている場合や、コネクション切断中などの理由で受領応答が無い場合、送信バッファにデータが蓄積されたままになります。
本機能を利用することで、送信バッファに格納されたメッセージに有効期限を設定することができ、送信バッファに格納されてから一定時間経過したメッセージを自動で削除することが可能となります。
設定方法については、Operability Add-onに関連する設定を参照してください。
送信バッファからメッセージが削除されるのは下記のケースです。
- 送信バッファに格納されたメッセージ数が上限を超えた場合
- メッセージの有効期限が切れた場合
これらのケースでメッセージが削除されたとき、イベント通知機能によりデバイスアダプタやエッジアプリケーション、Node-REDノードで削除を検知できます。必要に応じて、イベント通知機能をご利用ください。
Note
本機能はメッセージの永続化を行うものではないため、ICE Coreがダウンした場合には送信バッファに格納されていたメッセージは失われます。