3.3. ネットワーク接続での MQTT の使用


ブローカーは MQTT v3.1.1と v5.0 (および古い v3.1 コードメッセージ形式) をサポートします。MQTT は軽量のクライアントからサーバーへ、パブリッシュ/サブスクライブメッセージングプロトコルです。MQTT は、メッセージングのオーバーヘッドおよびネットワークトラフィック、およびクライアントのコードフットプリントを削減します。このような理由から、MQTT は、センサーやアクチュエーターなどのデバイスを制限するのが適しており、この ng(IoT) のインターネット向けの de facto 標準通信プロトコルがすばやく考えられます。

手順

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. MQTT プロトコルが有効になっているアクセプターを追加します。以下に例を示します。
<acceptors>
  <acceptor name="mqtt">tcp://localhost:1883?protocols=MQTT</acceptor>
  ...
</acceptors>

MQTT には、以下を含む便利な機能が多数含まれています。

QoS (Quality of Service)
各メッセージは、関連付けられた QoS(Quality of Service) を定義できます。ブローカーは、定義された最大 QoS(Quality of Service) レベルで、サブスクライバーに対してメッセージの配信を試みます。
保持されるメッセージ

特定のアドレスに対してメッセージを保持できます。クライアントの接続前に保持されるメッセージが送信された場合でも、他のメッセージの前に最後に保持されたメッセージを受信する新しいサブスクライバー。

保持されたメッセージは、sys.mqtt.<topic name> という名前のキューに保存され、クライアントが保持されたメッセージを削除するまで、または有効期限が設定されている場合はメッセージの有効期限が切れるまで、キュー内に残ります。キューが空の場合、キューは明示的に削除するまで削除されません。たとえば、次の設定ではキューが削除されます。

<address-setting match="$sys.mqtt.retain.#">
   <auto-delete-queues>true</auto-delete-queues>
   <auto-delete-addresses>true</auto-delete-addresses>
</address-setting>
ワイルドカードサブスクリプション
MQTT アドレスは、ファイルシステムの階層と同様に階層です。クライアントは、特定のトピックや、階層のブランチ全体にサブスクライブできます。
メッセージ
クライアントは、接続パケットの一部として will message を設定できます。クライアントが異常に切断されると、ブローカーは指定されたアドレスにメッセージを公開します。他のサブスクライバーはメッセージを受信し、対応できます。

MQTT プロトコルの詳細については、仕様を参照してください。

3.3.1. MQTT プロパティーの設定

キーと値のペアを MQTT アクセプターに追加して、接続プロパティーを設定できます。以下に例を示します。

<acceptors>
  <acceptor name="mqtt">tcp://localhost:1883?protocols=MQTT;receiveMaximum=50000;topicAliasMaximum=50000;maximumPacketSize;134217728;
serverKeepAlive=30;closeMqttConnectionOnPublishAuthorizationFailure=false</acceptor>
  ...
</acceptors>
receiveMaximum
完了通知が必要になる前にブローカーがクライアントから受信できる QoS 1 および 2 メッセージの最大数を指定することにより、フロー制御を有効にします。デフォルト値は 65535 です。-1 の値は、クライアントからブローカーへのフロー制御を無効にします。これには、値を 0 に設定するのと同じ効果がありますが、CONNACK パケットのサイズが小さくなります。
topicAliasMaximum
クライアントに対して、ブローカーがサポートするエイリアスの最大数を指定します。デフォルト値は 65535 です。-1 の値を指定すると、ブローカーはトピックエイリアスの制限をクライアントに通知できなくなります。これは、値を 0 に設定するのと同じ効果がありますが、CONNACK パケットのサイズが小さくなります。
maximumPacketSize
ブローカーがクライアントから受け入れることができる最大パケットサイズを指定します。デフォルト値は 268435455 です。値が -1 の場合、ブローカーはクライアントに最大パケットサイズを通知できなくなります。つまり、受信パケットのサイズに制限が適用されません。
serverKeepAlive
ブローカーが非アクティブなクライアント接続を開いたままにしておく期間を指定します。設定された値は、クライアントに設定されたキープアライブ値よりも小さい場合、またはクライアントに設定された値が 0 である場合にのみ、接続に適用されます。デフォルト値は 60 秒です。-1 の値は、ブローカーがクライアントのキープアライブ値を (その値が 0 であっても) 常に受け入れることを意味します。
closeMqttConnectionOnPublishAuthorizationFailure
デフォルトでは、承認がないために PUBLISH パケットが失敗した場合、ブローカーはネットワーク接続を閉じます。ブローカーがネットワーク接続を閉じる代わりに完了通知を送信するようにする場合は、closeMqttConnectionOnPublishAuthorizationFailurefalse に設定します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.