GB/T 32960 ゲートウェイ
EMQX GB/T 32960 ゲートウェイは、GB/T 32960 と MQTT プロトコル間のメッセージングプロトコル変換器であり、これらのプロトコルを使用するクライアント同士の通信を可能にします。この GB/T 32960 ゲートウェイは、クライアントとサーバーに対して軽量かつシンプルなメッセージングソリューションを提供し、さまざまなメッセージング環境でのメッセージ交換を実現します。TCP および SSL タイプのリスナーをサポートしているため、GB/T 32960 ゲートウェイは柔軟で多用途なメッセージングシステム構築ツールです。
本ページでは、EMQX における GB/T 32960 ゲートウェイの設定および使用方法を紹介します。
GB/T 32960 ゲートウェイの有効化
EMQX 5.4 以降、GB/T 32960 ゲートウェイはダッシュボード、REST API、および設定ファイル base.hocon を通じて設定および有効化できます。
TIP
EMQX をクラスターで稼働している場合、ダッシュボードまたは REST API で行った設定はクラスター全体に影響します。特定のノードのみ設定を変更したい場合は、base.hocon にて設定してください。
このセクションでは、ダッシュボードおよび REST API を使った GB/T 32960 ゲートウェイの有効化方法を説明します。
EMQX ダッシュボードの左側ナビゲーションメニューで Management -> Gateways をクリックします。Gateways ページにはサポートされているすべてのゲートウェイが一覧表示されます。GB/T 32960 を見つけ、Actions 列の Setup をクリックすると、Initialize GB/T 32960 ページに遷移します。
設定を簡略化するため、EMQX は Gateways ページのすべての必須フィールドにデフォルト値を用意しています。大幅なカスタマイズが不要な場合、以下の3クリックで GB/T 32960 ゲートウェイを有効化できます。
- Basic Configuration タブで Next をクリックし、すべてのデフォルト設定を受け入れます。
- 続いて表示される Listeners タブでは、EMQX がポート
7325で TCP リスナーを事前設定しています。再度 Next をクリックして設定を確認します。 - 最後に Enable ボタンをクリックして GB/T 32960 ゲートウェイを有効化します。
ゲートウェイの有効化が完了すると、Gateways ページに戻り、GB/T 32960 ゲートウェイのステータスが Enabled と表示されていることを確認できます。

上記の設定は REST API でも行えます。
例:
curl -X 'PUT' 'http://127.0.0.1:18083/api/v5/gateway/gbt32960' \
-u <your-application-key>:<your-security-key> \
-H 'Content-Type: application/json' \
-d '{
"name": "gbt32960",
"enable": true,
"mountpoint": "gbt32960/${clientid}/",
"retry_interval": "8s",
"max_retry_times": 3,
"message_queue_len": 10,
"listeners": [
{
"type": "tcp",
"name": "default",
"bind": "7325",
"max_conn_rate": 1000,
"max_connections": 1024000
}
]
}'REST API の詳細については、REST API を参照してください。
カスタマイズが必要な場合やリスナーの追加、認証ルールの追加を行いたい場合は、GB/T 32960 ゲートウェイのカスタマイズ をご覧ください。
GB/T 32960 クライアントとの連携
EMQX の GB/T 32960 ゲートウェイが有効化されると、GB/T 32960 プロトコルと MQTT 間の翻訳およびルーティングを行い、GB/T 32960 クライアントと MQTT を利用するシステム間の通信を可能にします。GB/T 32960 プロトコルと MQTT 仕様の違いにより、GB/T 32960 コマンドを直接 MQTT メッセージにマッピングすることはできません。これを解決するため、両者間の通信を円滑にするための特定の変換ルールを設けています。
- コマンドの MQTT への変換: GB/T 32960 クライアントから発行されるすべてのコマンドは MQTT メッセージに変換されます。このメッセージのトピックは
${mountpoint}/upstream/${command}の形式で、ペイロードはコマンドの詳細を含む JSON 形式です。 - GB/T 32960 クライアントへのコマンド送信: ユーザーは
${mountpoint}/dnstreamトピックに JSON 形式のメッセージをパブリッシュすることで、GB/T 32960 クライアントにコマンドを送信できます。 - GB/T 32960 クライアントからの応答処理: GB/T 32960 クライアントから受信した応答は、トピック
${mountpoint}/upstream/responseの MQTT メッセージに変換されます。
GB/T 32960 コマンドと MQTT メッセージの相互変換の詳細は、GB/T 32960 データ交換フォーマット を参照してください。
GB/T 32960 ゲートウェイのカスタマイズ
デフォルト設定に加え、EMQX はさまざまな設定オプションを提供し、特定のビジネス要件に柔軟に対応できます。本セクションでは、Gateways ページで利用可能な各種フィールドについて詳しく説明します。
基本設定
Gateways ページで GB/T 32960 を探し、Actions 列の Settings をクリックします。Settings パネルでは、許容される最大ヘッダー長やヘッダー長の制限、統計情報の有効化、ゲートウェイの MountPoint 文字列の設定が行えます。以下のスクリーンショット下の説明を参照してください。

MountPoint: パブリッシュおよびサブスクライブ時にすべてのトピックの先頭に付加される文字列を設定します。これにより異なるプロトコル間でのメッセージルーティングの分離を実現できます。例:
stomp/Retry Interval: 再送信の間隔(デフォルト:
8s)Max Retry Times:最大再送回数(デフォルト:
3)Message Queue Length:最大メッセージキュー長(デフォルト:
10)Idle Timeout: GB/T 32960 フレーム受信待機の最大秒数。無通信時に接続を切断するまでの時間を設定します。
Enable Statistics: ゲートウェイの統計収集および報告を許可するかどうかを設定します。デフォルトは
true。選択肢はtrueまたはfalse。注意: このトピックプレフィックスはゲートウェイが管理しており、クライアントはパブリッシュやサブスクライブ時に明示的にこのプレフィックスを付加する必要はありません。
リスナーの追加
ポート 7325 で名前が default の TCP リスナーがすでに設定されており、プール内の最大アクセプター数は16、最大同時接続数は1,024,000です。より詳細な設定を行うには Listeners タブをクリックし、編集、削除、新規リスナーの追加が可能です。
TIP
GB/T 32960 ゲートウェイは TCP および SSL タイプのリスナーのみをサポートしています。

Add Listener をクリックすると Add Listener ページが開き、以下の設定項目を続けて設定できます。
基本設定
- Name: リスナーの一意識別子を設定します。
- Type: プロトコルタイプを選択します。GB/T 32960 では
tcpまたはsslが選択可能です。 - Bind: リスナーが接続を受け付けるポート番号を設定します。
- MountPoint(任意): パブリッシュおよびサブスクライブ時にすべてのトピックの先頭に付加される文字列を設定し、異なるプロトコル間でのメッセージルーティング分離を実現します。
リスナー設定
- Acceptor: アクセプタープールのサイズを設定します(デフォルト:
16)。 - Max Connections: リスナーが処理可能な最大同時接続数を設定します(デフォルト:
1024000)。 - Max Connection Rate: リスナーが1秒あたりに受け入れ可能な新規接続の最大レートを設定します(デフォルト:
1000)。 - Proxy Protocol: EMQX が ロードバランサー の背後で動作している場合、プロトコル V1/V2 を有効にします。
- Proxy Protocol Timeout: プロキシプロトコルパッケージの受信待機の最大秒数。無通信時に接続を切断するまでの時間(デフォルト:
3s)。
TCP 設定
- ActiveN: ソケットの
{active, N}オプションを設定します。これはソケットが能動的に処理可能な受信パケット数を示します。詳細は Erlang ドキュメント - setopts/2 を参照してください。 - Buffer: 受信および送信パケットを格納するバッファサイズ(単位: KB)を設定します。
- TCP_NODELAY: 接続に対して
TCP_NODELAYフラグを有効にするかどうかを設定します。これはクライアントが前のデータのアックを待たずに追加データを送信できるかを制御します。デフォルトはfalse。選択肢はtrueまたはfalse。 - SO_REUSEADDR: ローカルのポート番号再利用を許可するかどうかを設定します。
- Send Timeout: 送信タイムアウトの最大秒数。無通信時に接続を切断するまでの時間(デフォルト:
15s)。 - Send Timeout: 送信タイムアウト時に接続を切断するかどうかを設定します。
SSL 設定(SSL リスナーのみ)
TLS Verify の有効化はトグルスイッチで設定可能です。ただし、その前に関連する TLS Cert、TLS Key、CA Cert の情報をファイル内容の入力または Select File ボタンでアップロードして設定する必要があります。詳細は SSL/TLS 接続の有効化 を参照してください。
続いて以下の設定が可能です。
- SSL Versions: サポートする SSL バージョンを設定します。デフォルトは
tlsv1.3、tlsv1.2、tlsv1.1、tlsv1。 - Fail If No Peer Cert: クライアントが空の証明書を送信した場合に接続を拒否するかどうかを設定します。デフォルトは
false。選択肢はtrueまたはfalse。 - Intermediate Certificate Depth: ピア証明書に続く有効な認証パスに含まれる自己発行でない中間証明書の最大数を設定します。デフォルトは
10。 - Key Password: プライベートキーがパスワード保護されている場合に使用するパスワードを設定します。
認証の設定
GB/T 32960 ゲートウェイは HTTP サーバー認証 のみをサポートしています。login コマンドの情報を使用し、vin コードを clientid としてクライアントの認証フィールドを生成します。
- クライアント ID:
vinコード - ユーザー名:
vinコード
以下は REST API または設定ファイルを使って GB/T 32960 ゲートウェイの HTTP 認証を作成する例です。