# 開発に関する質問

## どのプロトコル接続がサポートされていますか？

EMQXのデプロイメントは、TLS/SSL上のMQTTおよびTLS/SSL上のWebSocketsプロトコル接続をサポートしています。

その他のプロトコルサポートが必要な場合は、チケットを提出するか、メール（cloud-support@emqx.io）でお問い合わせください。

## ドメイン名のバインド方法は？

**Dedicatedデプロイメント**を作成すると、デプロイメント内にドメインとして表示されるMQTT接続アドレスが付与されます。すでに独自のドメインをお持ちで、それにリンクさせたい場合があります。

### 手順

1. 例として、トップレベルドメインがabc.comで、MQTTサービスにmqtt.abc.comとしてアクセスしたいとします。EMQXプラットフォーム上のデプロイメントの接続アドレスはxxx.emqx.cloudです。

2. ドメイン設定パネルでmqtt.abc.comのCNAMEレコードをxxx.emqx.cloudにポイントします。

3. DNS解決が反映されると、mqtt.abc.com経由でMQTTサービスに接続できます。

:::tip
**Serverlessデプロイメントでは、CNAMEを使ったカスタムドメインのバインドはサポートされていません。** EMQX Cloudが提供するデフォルトのドメイン接続アドレスを使用することを推奨します。これにより、接続の適切な割り当てと管理が保証されます。
:::

## NATゲートウェイの設定方法は？

NATは**Dedicatedプラン**のみサポートされています。デプロイメント内で[NATゲートウェイ](../vas/nat-gateway.md)サービスを有効化できます。

## クラスターのスケールアウトはデバイスの接続に影響しますか？

数秒間の接続中断が発生します。

## VPCピアツーピア接続を構築した場合、ローカルネットワーク経由で自分のサービスをMQTTサービスに接続するには？

Dedicatedデプロイメントへの内部ネットワーク接続が必要な場合は、[内部エンドポイント](../vas/intranet-lb.md)を作成して実現できます。これは当社が提供する追加サービスです。

## APIはサポートされていますか？

はい。クライアント情報の照会、メッセージの投稿、ルールの作成など、外部システムとの連携のためにHTTP APIが提供されています。

詳細は[REST API](../api/api_overview.md)をご覧ください。

## どのようなTLS/SSL認証がサポートされていますか？

[片方向](../deployments/tls_ssl.md)、[双方向](../deployments/tls_ssl.md)、および[カスタム署名](../deployments/tls_ssl.md)の設定をサポートしています。

## 他のシステムとの連携方法は？

データ統合を利用して他のアプリケーションと連携できます。詳細は[データ統合](../data_integration/introduction.md)をご確認ください。

## デバイスの認証データが自分のデータベースに保存されています。MQTT接続の認証を自分のデータベースで行うことはできますか？

EMQX Cloud Dedicatedはユーザー自身のデータベースからの認証をサポートしています。詳細は[外部認証とアクセス制御](../deployments/custom_auth.md)のドキュメントをご覧ください。

## コンソールでデバイスログはどのくらいの期間保持されますか？

EMQX Cloudはデバイス通信ログを保持せず、デプロイメントのイベントログのみを保持します。イベントログの保持期間はデフォルトで7日間です。

## デバイスイベントはどのくらいの期間保存されますか？

デバイスイベントデータは、[イベントトピック](../rule_engine/rule_engine_events.md)を通じてサードパーティのストレージに永久的に統合可能です。

## オフラインメッセージは利用可能ですか？

一般的に、MQTTクライアントはオフライン時にはメッセージを受信しません。ただし、クライアントが固定のClientIDを持ち、clean_sessionがfalseであり、QoS設定がサーバーの要件を満たしている場合、サーバーはクライアントがオフラインの間に一定量のオフラインメッセージを保持し、クライアントが再接続した際に送信します。

オフラインメッセージは、ネットワーク接続が不安定な場合やQoSに特定の要件がある場合に有効です。

## オフラインメッセージはどのくらい保持されますか？

MQTT v3プロトコルではデフォルトで2時間、MQTT v5プロトコルではクライアントのsession_expiry_intervalの値に従って設定されます。期限切れ後、キュー内のメッセージは失われます。

## オフラインメッセージのステージングはどう行いますか？

メッセージのステージングは不安定なため、オフラインメッセージの保存を推奨します。ディスクに保存することを推奨し、そのためにデータ統合を利用してRedisなどのデータベースにオフラインメッセージを保存します。デバイスがオンラインになりメッセージを消費すると、対応するオフラインメッセージも削除されます。

## セッション数はどのように計算されますか？

セッションの定義：セッション数は、接続中のクライアント数と、ブローカーでセッションを保持している切断済みクライアント数の合計で計算されます。接続中のクライアントは、`CONNECT`後にブローカーに接続し、`keepAlive`期間内に切断されていないクライアントを指します。セッションを保持する切断済みクライアントは、オフラインで`CleanSession`がfalseに設定されているクライアントであり、これらもセッション数に含まれます。デバイスが`DISCONNECT`してオフラインになるか、`keepAlive`期間以上通信がない場合、そのデバイスはオフラインとみなされ、セッション数に含まれません。

## TPSに関する質問
### メッセージTPSとは何ですか？

**メッセージTPS（Transactions Per Second）**は、EMQXデプロイメントで1秒あたりに処理されるメッセージ数を測定する指標です。メッセージTPSはEMQXの入出力メッセージの合計レートを含みます。

- **メッセージ受信TPS**：クライアントからMQTTプロトコルやHTTP API経由でEMQXに送信されるメッセージの1秒あたりの数。
- **メッセージ送信TPS**：EMQXからクライアントや外部サービスに送信されるメッセージの1秒あたりの数。通常、クライアントがサブスクライブしたMQTTメッセージや、データ統合経由で外部システムに転送されるメッセージを含みます。

### メッセージTPSに含まれる操作は何ですか？

メッセージTPSにはあらゆる種類のメッセージデータ交換が含まれます。

#### メッセージ受信

クライアントからEMQXデプロイメントに送信されるメッセージで、以下を含みます：

- **MQTT PUBLISH**：クライアントがMQTTプロトコルでパブリッシュするメッセージ。
- **HTTP PUBLISH**：HTTP API（例：POST /mqtt/publishや/mqtt/publish_batch）経由でパブリッシュされるメッセージ。

#### メッセージ送信

EMQXデプロイメントから送信されるメッセージで、以下を含みます：

- **MQTTサブスクリプション**：クライアントが特定のトピックをサブスクライブして受信するメッセージ。
- **データ統合転送**：EMQXが外部サービスに転送するメッセージや、外部サービスから受信してクライアントに転送するメッセージ。

### メッセージTPSに含まれない操作は何ですか？

以下のメッセージは実際のメッセージデータ交換を伴わないため、メッセージTPSの計算に含まれません：

- **接続操作**：MQTTのCONNECTやCONNACKなどの操作はTPSにカウントされません。
- **サブスクリプション操作**：MQTTのSUBSCRIBEやSUBACKなどの操作はTPSにカウントされません。

### なぜデータ統合の転送メッセージがメッセージTPSに含まれるのですか？

データ統合の転送はEMQXと外部サービス間のメッセージ交換を伴い、CPU、メモリ、帯域幅などのシステムリソースを消費します。そのため、適切なリソース割り当てとサービスの安定性を最適化するために、データ統合転送のメッセージレートもメッセージTPSの計算に含まれています。

### メッセージTPSの上限を超えた場合はどうなりますか？

メッセージTPSがデプロイメントの上限を超えると、超過分のメッセージは破棄されます。メッセージTPS超過によるサービス停止は**EMQX Cloud SLA**の対象外となります。詳細は[サービスレベルアグリーメント（SLA）](https://www.emqx.com/en/policy/service-level-agreement)をご確認ください。

## トラフィック統計に差異があるのはなぜですか？

デプロイメント概要のトラフィック統計とメトリクスで計算されるメッセージパッケージトラフィックの合計に差異がある場合、これは主にメッセージパッケージトラフィック統計がMQTTプロトコル（MQTTおよびWSを含む）のアプリケーション層クライアントメッセージのパブリッシュ、接続、サブスクリプションのトラフィックのみを対象としているためです。データ統合、TLS処理、TCP層で発生するトラフィックは含まれていません。そのため、TLSおよびデータ統合から発生するトラフィックによって大きな差異が生じます。
