# コネクター

EMQXのコネクターはデータ統合における重要な概念であり、Sink/Sourceの基盤となる接続チャネルとして機能し、外部データシステムへの接続に使用されます。

## 基本概念

コネクターは外部データシステムへの接続に特化しています。ユーザーは異なる外部データシステムごとに複数のコネクターを作成でき、1つのコネクターが複数のSink/Sourceへの接続を提供することも可能です。

MySQL Sinkを例に、コネクター、ルール、およびSinkの関係は以下の図のように示されます。

![EMQX Connector Concept](./assets/connector-sink.jpg)

### 特徴と利点

Sink/Sourceを作成する際、ユーザーは既存のコネクターを選択するだけで、基盤となる接続の詳細を気にする必要がありません。この設計の利点は以下の通りです。

- 接続設定をデータ処理やマッピング設定から分離することで、データ処理フローの設計がよりモジュール化され柔軟になります。
- コネクターの作成および設定はデータ処理フローの設計に影響を与えません。接続情報を変更する必要がある場合はコネクター側で修正でき、設定や保守の簡素化に寄与します。
- 複数のSink/Sourceに接続する必要がある外部データシステムの場合、単一のコネクターを作成することで対応でき、設定の重複を避けられます。

## コネクターの作成

データ統合を作成する際は、統合が機能するためにSink/Source用のコネクターを作成する必要があります。コネクターはダッシュボードから作成および管理でき、1つのコネクターを複数のSink/Sourceで再利用可能です。

:::tip

Sink/Source作成の過程でコネクターを作成することもでき、その場合は自動的にコネクター作成プロセスに入ります。

:::

1. ダッシュボードの左ナビゲーションメニューで **Integration** -> **Connectors** をクリックします。

2. ページ右上の **Create** ボタンをクリックして、コネクター作成プロセスに入ります。

3. コネクタータイプ選択ページで必要なコネクターを選択し、**Next** をクリックして接続パラメータを入力します。対応するコネクターは[こちら](./data-bridges.md#supported-integrations)を参照してください。

   ![EMQX Select Connector](./assets/choose-connector-type.png)

4. コネクター設定情報ページで、コネクター名、説明、接続パラメータなどの基本情報を入力します。ここでの内容は各Sink/Sourceの使用ドキュメント内のコネクターパラメータセクションを参照しており、詳細は省略します。

   ![EMQX Connector Configuration](./assets/config-connector.png)

## コネクターの表示と管理

コネクター作成後は、Connectorsページで基本情報を確認できます。有効化／無効化の切り替えや、設定の編集、ルール作成、コネクターの複製、削除などの管理操作はコネクター一覧の **Actions** 列から行えます。

<img src="./assets/view_connector.png" alt="コネクターの表示"  />

コネクターがSink/Sourceで使用されている場合、コネクター設定の更新によりSink/Sourceがリロードされ、データ処理が一時的に中断される可能性があります。更新は業務の閑散時間帯に行うことを推奨します。

使用中のコネクターは削除できません。コネクターを削除するには、まずそのコネクターを使用しているSink/Sourceを削除する必要があります。削除時には、コネクターに関連付けられたSink/Sourceが警告ダイアログで表示されます。Sink/Sourceをクリックすると、ルール設定ページに遷移し、そこでSink/Sourceの削除が可能です。

![delete_associated_sink](./assets/delete_associated_sink.png)

## コネクターの状態

ダッシュボードでコネクターの稼働状況を確認でき、トラブルシューティングや監視に役立ちます。

コネクターの状態は以下の通りです。

- **Connecting**：ヘルスチェックが行われる前の初期状態で、まだ外部データシステムへの接続を試みている段階です。
- **Connected**：コネクターが外部データシステムに正常に接続されている状態です。この状態でヘルスチェックに失敗すると、障害の程度に応じて「connecting」または「disconnected」状態に切り替わることがあります。
- **Disconnected**：ヘルスチェックに失敗し、不健康な状態です。設定によっては定期的に自動再接続を試みます。
- **Inconsistent**：クラスター内のノード間でコネクターの状態が不一致です。例えば、一部のノードでは接続済み、他のノードでは切断済みとなっている場合です。

## 注意点 - コネクションプール

一部のコネクターはコネクションプールという再利用可能な接続オブジェクトの集合を提供しています。コネクションプールを利用することで、リクエストごとに接続を再作成する必要がなくなり、リソース消費の削減や接続効率・同時実行性の向上に寄与します。

コネクションプールのサイズは各EMQXノードごとのサイズを指し、EMQXは各ノードに別々のコネクションプールを作成します。EMQXは通常クラスターでデプロイされるため、外部データシステムの制限を超える接続数になる可能性があります。

例えば、3ノードのEMQXクラスターでコネクターのコネクションプールサイズを8に設定した場合、EMQXは3 × 8 = 24の接続を作成します。
