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 と表示されていることを確認できます。

上記の設定は HTTP 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 クライアントへのコマンド送信:ユーザーは JSON 形式のメッセージをトピック
${mountpoint}/dnstream
にパブリッシュすることで、GB/T 32960 クライアントにコマンドを送信できます。 - GB/T 32960 クライアントからの応答処理:GB/T 32960 クライアントから受信した応答は、トピック
${mountpoint}/upstream/response
の MQTT メッセージに変換されます。
GB/T 32960 と MQTT 間の情報変換プロセスの詳細については、Data Exchange Guide をご参照ください。
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 Documentation - 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 ボタンでアップロードして設定する必要があります。詳細は Enable SSL/TLS Connection を参照してください。
続いて以下の設定が可能です。
- 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 認証を作成する例です。