> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Apache Kafka 端口設定

> 將知行之橋連線到 Apache Kafka 以進行資料集成和同步。

Apache Kafka 端口允許透過向 Apache Kafka 推送資料或從 Apache Kafka 拉取資料，將 Apache Kafka 整合到資料流中。

## 核心功能

* 具有生產和消費能力的即時訊息流
* 多種身分驗證方案，包括 SASL 和 Kerberos
* 基於主題的訊息組織與消費者組管理
* 可配置的讀取時長，用於控制等待訊息到達的時間

按照以下步驟將知行之橋連線到 Apache Kafka。

## 前提條件

要與 Apache Kafka 建立連線，使用者至少必須具備：

* 一個 Apache Kafka 環境，其中包含有效的 Apache Kafka 主機伺服器和伺服器管理器（broker，通常是 Zookeeper 或 KRaft）。

* 從 Apache Kafka 主機到包含目標主題的叢集中所有 Apache Kafka 伺服器和伺服器管理器的網路連線。

* 在 Apache Kafka 中建立的主題，用於向伺服器傳送訊息和從伺服器接收訊息。

* 從知行之橋到 Apache Kafka 伺服器的清晰網路路徑。

<Note>
  知行軟體不提供 Apache Kafka 伺服器或伺服器管理器的建立或配置方面的設定協助或支援。有關 Apache Kafka 環境設定的資訊，請參閱 [Apache Kafka](https://kafka.apache.org/41/) 文件。
</Note>

## 建立連線

要允許知行之橋使用 Apache Kafka 中的資料，必須先建立到 Apache Kafka 的連線。有兩種方法可以建立此連線：

* 將 Apache Kafka 端口新增到工作流程。然後，在 **設定** 索引標籤中，單擊連線下拉式清單旁邊的 **建立**。
* 開啟知行之橋**系統設定** 頁面，然後開啟 **連線** 索引標籤。點選 **新增**，選擇 **Apache Kafka**，然後點選 **下一步**。

<Note>
  - 僅在第一次建立連線時才需要登入過程。
  - 與 Apache Kafka 的連線可以跨多個 Apache Kafka 端口重複使用。
</Note>

### 輸入連線設定

開啟新的連線對話方塊後，按照以下步驟操作：

1. 提供所需資訊：

   * **名稱** — 連線的靜態名稱。
   * **型別** — 始終設定為 Apache Kafka。
   * **身分驗證方案** — 用於連線的授權方案。選項有 **Auto**、**None**、**Plain**、**Scram** 和 **Kerberos**。
   * **使用者** —（除 **None** 之外的所有方案）用於登入的 Apache Kafka 使用者名稱。
   * **密碼** — 上面輸入使用者的密碼。
   * **Bootstrap Servers** — 用於建立到 Apache Kafka 初始連線的主機/端口對。如果連線到 Confluent Cloud，可以在叢集設定中找到此資訊。

2. 可選擇點選 **高階** 以開啟高階連線設定的下拉功能表。在大多數情況下，不需要這些設定。

3. 點選 **測試連線** 以確保知行之橋可以使用提供的資訊連線到 Apache Kafka。如果發生錯誤，請檢查所有欄位並重試。

4. 點選 **新增連線** 以完成連線。

5. 在端口配置窗格的 **連線** 下拉式清單中，選擇新增的連線。

6. 在 **Topic** 欄位中，輸入要作為目標的 Apache Kafka 主題。

7. 點選 **儲存更改**。

<Note>
  **高階** 索引標籤上還有特定於資料來源的身分驗證和配置選項。此文件並未描述所有這些選項，但你可以在知行軟體網站的 [線上幫助檔案](https://www.kasoftware.com/articles.html) 頁面找到資料來源的詳細資訊。
</Note>

## 選擇操作

與 Apache Kafka 建立連線後，必須選擇 Apache Kafka 端口應執行的操作。下表概觀了每個操作及其在知行之橋工作流程中的位置：

| 操作        | 描述                                   | 工作流程中的位置 |
| --------- | ------------------------------------ | -------- |
| [生產](#生產) | 接受來自檔案或其他端口的輸入資料並將其傳送到 Apache Kafka。 | 結束       |
| [消費](#消費) | 檢查佇列中的訊息，並透過輸出路徑沿工作流程向下傳送獲得的任何資料。    | 中間       |

### 生產

**生產** 操作將輸入資料傳送到 Apache Kafka。此資料可以來自其他端口，也可以來自你手動上傳到 Apache Kafka 端口輸入索引標籤的檔案。Apache Kafka 端口會將輸入資料傳送到你在 **配置** 部分的 **Topic** 欄位中輸入的主題。

#### 高階訊息鍵和分割區配置

Apache Kafka 端口在向 Kafka 主題生產訊息時支援指定訊息鍵和分割區，從而在多分割區環境中提供對訊息分發和排序的細粒度控制。

##### 訊息鍵配置

可以使用知行之橋訊息頭 `MessageKey` 來指定 Kafka 訊息鍵，或者透過 **高階** 索引標籤中[進階設定](#進階設定)部分的 **Key Header** 欄位來告知知行之橋使用輸入訊息上的哪個標頭來確定訊息鍵。此鍵決定訊息傳送到哪個分割區，並確保分割區內的訊息排序。

##### 分割區配置

可以使用以下可選設定來控制哪個分割區接收訊息：

* **Partition Header:** 定義端口用於設定分割區的訊息頭。預設標頭名稱為 `MessagePartition`，但可以使用包含所需分割區的任何訊息頭來覆蓋它。
* **Partition:** 在 **高階** 索引標籤的[進階設定](#進階設定)部分提供分割區編號。

<Note>
  - 如果同時存在分割區標頭和特定分割區編號，則訊息頭優先。
  - 如果既沒有指定訊息鍵也沒有指定分割區，Kafka 將在目標主題的所有分割區中分發訊息。
</Note>

### 消費

**消費** 操作會針對你在 **配置** 部分的 **Topic** 欄位中輸入的主題檢查 Apache Kafka 佇列中的訊息。你必須為此操作設定以下欄位：

* **Consumer Group ID**：指定端口建立的消費者應該屬於哪個組。
* **Read Duration**：端口等待訊息到達的時間長度（以秒為單位）。無論收到的訊息數量如何，端口都將等待整個持續時間。

透過 **消費** 端口處理的資料進入輸出索引標籤，並向下傳輸到知行之橋工作流程的下一個步驟。

## 其他連線配置

### 進階選項卡

#### 進階設定

| 設定                   | 說明                                                                                      |
| -------------------- | --------------------------------------------------------------------------------------- |
| **Partition**        | 要向其傳送訊息的分割區編號。如果同時提供了此項和 **Partition Header**，則以後者為準。有關此項及後續設定的詳細資訊，請參閱[分割區配置](#分割區配置)。 |
| **Partition Header** | 用於指定目標分割區的知行之橋訊息頭名稱。預設值為 `MessagePartition`。                                            |
| **Key Header**       | 用於指定訊息鍵的知行之橋訊息頭名稱。預設值為 `MessageKey`。詳情請參閱[訊息鍵配置](#訊息鍵配置)。                               |
| **本地檔案方案**           | 用於為端口輸出的訊息分配檔名的方案。可以在檔名中動態使用宏，以包含識別碼和時間戳等資訊。有關更多資訊，請參閱[宏](#宏)。                          |
| **其他驅動程式設定**         | 僅在特定用例中使用的隱藏屬性。                                                                         |

#### 訊息

<Note>
  **儲存至 Sent 資料夾**和**Sent 資料夾方案**設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇**顯示成功路徑**，然後將成功路徑連線到[File 端口](../file)。
</Note>

| 設定                    | 描述                                                  |
| --------------------- | --------------------------------------------------- |
| **儲存至 Sent 資料夾**（已棄用） | 將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受靜態加密保護。 |
| **Sent 資料夾方案**（已棄用）   | 按所選時間間隔對 Sent 資料夾中的檔案進行分組。僅在啟用**儲存至 Sent 資料夾**時適用。  |

#### 日誌

| 設定           | 說明                                                                                                                                             |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **日誌級別**     | 端口生成日誌的詳細程度。請求支援時，請將其設定為 **Debug**。                                                                                                            |
| **日誌子資料夾方案** | 指示端口根據所選間隔對 Logs 資料夾中的檔案進行分組。**每週** 選項（預設值）指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。將此設定留空表示端口將所有日誌直接儲存到 Logs 資料夾中。對於處理大量交易的端口，使用子資料夾有助於保持日誌有序並提升效能。 |
| **日誌訊息**     | 勾選此項可使已處理檔案的日誌項目包含檔案本身的副本。如果停用此功能，可能無法從 **輸入** 或 **輸出** 索引標籤下載檔案副本。                                                                            |

#### 其他

*其他設定用於特定用例。*

| 設定       | 說明                                                                              |
| -------- | ------------------------------------------------------------------------------- |
| **其他設定** | 允許你以分號分隔的清單配置隱藏端口設定（例如 `setting1=value1;setting2=value2`）。正常的端口用例和功能不應需要使用這些設定。 |

### 自動化索引標籤

#### 自動化設定

*與端口自動處理檔案相關的設定。*

| 設定           | 說明                                                                         |
| ------------ | -------------------------------------------------------------------------- |
| **傳送**       | 到達端口的檔案是否自動傳送。                                                             |
| **重試間隔**     | 傳送失敗後重試前的分鐘數。                                                              |
| **最大嘗試次數**   | 端口處理檔案的最大次數。成功與否基於伺服器的成功確認。如果設定為 0，端口將無限次重試檔案。                             |
| **接收**       | 端口是否應自動查詢資料來源。                                                             |
| **間隔**       | 自動查詢嘗試之間的時間間隔。                                                             |
| **整點後的分鐘數**  | 小時計劃的分鐘偏移量。僅當上方的間隔設定為 *每小時* 時適用。例如，如果該值設定為 5，自動化服務將在 1:05、2:05、3:05 等時間下載。 |
| **時間**       | 嘗試發生的一天中的具體時間。僅當上方的間隔設定為 *每天*、*每週* 或 *每月* 時適用。                             |
| **日期**       | 嘗試發生的日期。僅當上方的間隔設定為 *每週* 或 *每月* 時適用。                                        |
| **分鐘**       | 嘗試下載前等待的分鐘數。僅當上方的間隔設定為 *分鐘* 時適用。                                           |
| **Cron 運算式** | 一個五段字串，表示用於確定嘗試發生時間的 cron 運算式。僅當上方的間隔設定為 *高階* 時適用。                         |

#### 效能

*與端口資源分配相關的設定。*

| 設定           | 說明                                                                                                                 |
| ------------ | ------------------------------------------------------------------------------------------------------------------ |
| **最大工作執行緒數** | 此端口處理檔案時從執行緒池消耗的最大工作執行緒數。如果已設定，此值會覆蓋[進階設定](./Advanced-Settings.html)頁面中[效能設定](./Performance-Settings.html)部分的預設設定。 |
| **最大檔案數**    | 分配給端口的每個執行緒傳送的最大檔案數。如果已設定，此值會覆蓋[進階設定](./Advanced-Settings.html)頁面中[效能設定](./Performance-Settings.html)部分的預設設定。      |

### 警示索引標籤

*與配置警示和服務級別協議 (SLA) 相關的設定。*

#### 端口電子郵件設定

在執行 SLA 之前，需要設定用於通知的電子郵件警示。點選 **配置警示** 會開啟一個新的瀏覽器視窗並轉到[設定頁面](./Settings-Page.html)，你可以在其中設定系統範圍的警示。有關更多資訊，請參閱[警示](./Settings-Page.html#alerts)。

#### 服務級別協議 (SLA) 設定

SLA 允許你配置工作流程中的端口預期傳送或接收的數量，並設定期望滿足該數量的時間範圍。當 SLA 未滿足時，知行之橋會傳送電子郵件提醒使用者，並將 SLA 標記為 *At Risk*，這意味著如果 SLA 很快仍未滿足，它將被標記為 *Violated*。這讓使用者有機會介入並確定 SLA 未滿足的原因，並採取適當措施。如果在風險期結束時 SLA 仍未滿足，則 SLA 會被標記為違反，並再次通知使用者。

要定義 SLA，請點選 **新增預期數量條件**。

* 如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用於哪個方向。
* 將 **Expect at least** 設定為你期望處理的最小交易數（數量），然後使用 **Every** 欄位指定時間範圍。
* 預設情況下，SLA 每天生效。要更改此設定，請取消選中 **Everyday**，然後選中所需的星期幾。
* 使用 **And set status to 'At Risk'** 指定 SLA 應何時標記為存在風險。
* 預設情況下，只有當 SLA 違反時才傳送通知。要更改此設定，請勾選 **Send an 'At Risk' notification**。

以下範例顯示了一個 SLA 配置：該端口預計在週一至週五每天接收 1000 個檔案。如果在時間段結束前 1 小時仍未收到 1000 個檔案，則會傳送風險通知。

<img src="https://mintcdn.com/qiao/ilnLy7gsSdFqbKmI/public/images/sla_defined.png?fit=max&auto=format&n=ilnLy7gsSdFqbKmI&q=85&s=33e5282b3f7970e3e1fef056825d7772" alt="SLA 配置範例" width="1408" height="1550" data-path="public/images/sla_defined.png" />

<Note>
  如有必要，可以關閉 SLA 警示。這在維護時段可能很有用。點選導覽列上的 **設定**，然後導航到 **警示 > 常規警示**。點選平板和鉛筆圖示進行編輯，並取消勾選 **SLA 警示** 設定。
</Note>

## 宏

在檔案命名策略中使用宏可以提高組織效率，並有助於理解資料上下文。透過在檔名中加入宏，可以動態包含識別碼、時間戳和標頭資訊等相關資訊，為每個檔案提供有價值的上下文。這有助於確保檔名反映對組織很重要的詳細資訊。

知行之橋支援以下宏，它們都使用以下語法：`%Macro%`。

| 宏                       | 說明                                                                                                               |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------- |
| ConnectorID             | 計算為端口的 ConnectorID。                                                                                              |
| Ext                     | 計算為端口當前正在處理的檔案的副檔名。                                                                                              |
| Filename                | 計算為端口當前正在處理的檔名（包含副檔名）。                                                                                           |
| FilenameNoExt           | 計算為端口當前正在處理的檔名（不含副檔名）。                                                                                           |
| MessageId               | 計算為端口輸出訊息的 MessageId。                                                                                            |
| RegexFilename:*pattern* | 將 RegEx 模式應用於端口當前正在處理的檔名。                                                                                        |
| Header:*headername*     | 計算為當前正在處理的訊息上目標標頭（`headername`）的值。                                                                               |
| LongDate                | 計算為系統當前日期時間的長格式（例如 Wednesday, January 24, 2024）。                                                                 |
| ShortDate               | 計算為 yyyy-MM-dd 格式的系統當前日期（例如 2024-01-24）。                                                                         |
| DateFormat:*format*     | 計算為指定格式（`format`）的系統當前日期時間。有關可用的日期時間格式，請參閱[日期格式範例](./Date-Formatters.html#date-formats-with-literal-characters)。 |
| Vault:*vaultitem*       | 計算為指定保管庫項的值。                                                                                                     |

### 範例

某些宏（如 %Ext% 和 %ShortDate%）不需要參數，但其他宏需要參數。所有帶參數的宏都使用以下語法：`%Macro:argument%`

以下是一些帶參數宏的範例：

* %Header:headername%：其中 `headername` 是訊息上的標頭名稱。
* %Header:mycustomheader% 解析為輸入訊息上設定的 `mycustomheader` 標頭值。
* %Header:ponum% 解析為輸入訊息上設定的 `ponum` 標頭值。
* %RegexFilename:pattern%：其中 `pattern` 是規則運算式模式。例如，`%RegexFilename:^([\\w][A-Za-z]+)%` 匹配並解析為檔名中的第一個單詞，且不區分大小寫（`test_file.xml` 解析為 `test`）。
* %Vault:vaultitem%：其中 `vaultitem` 是[保管庫](./Global-Settings-Vault.html)中的專案名稱。例如，`%Vault:companyname%` 解析為保管庫中儲存的 `companyname` 項的值。
* %DateFormat:format%：其中 `format` 是接受的日期格式（詳情請參閱[日期格式範例](./Date-Formatters.html#sample-date-formats)）。例如，`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%` 解析為檔案上的日期和時間戳。

還可以建立更復雜的宏，如以下範例所示：

* 在一個檔名中組合多個宏：`%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%`
* 在宏外包含文字：`MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%`
* 在宏內包含文字：`%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%`
