設定訊息處理工具的 I/O 逾時

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

本文說明如何為 Apigee Edge Message Processor 設定 I/O 超時。

訊息處理器的 I/O 逾時代表訊息處理器等待的時間,包括等待從後端伺服器接收回應,或等待插座準備好將要求寫入後端伺服器,然後逾時。

訊息處理器 I/O 超時的預設值為 55 seconds。這個逾時時間適用於目標端點設定中設定的後端伺服器,以及 API Proxy 的 ServiceCallout 政策。

您可以根據需求,將訊息處理器的 I/O 超時時間調高或調低,預設值為 55 seconds。您可以在下列位置設定這項功能:

  • 在 API Proxy 中
    • 目標端點
    • ServiceCallout 政策
  • 在訊息處理器上

下列屬性可控制訊息處理器的 I/O 逾時:

資源名稱 位置 說明
io.timeout.millis

API Proxy:

  • 目標端點
  • 服務呼叫政策

這是訊息處理器執行下列動作的最長時間:

  • 建立連線並將要求傳送至後端伺服器後,等待接收後端伺服器的回應。
  • 等待通訊端準備就緒,以便訊息處理器將要求傳送至後端伺服器。

如果後端伺服器在這段逾時期間內沒有回應,訊息處理器就會逾時。

根據預設,這個屬性會採用在 訊息處理器 上為 HTTPTransport.io.timeout.millis 屬性設定的值。預設值為 55 seconds

如果使用特定 API Proxy 的新逾時值修改這個屬性,則只有該 API Proxy 會受到影響。

HTTPTransport.io.timeout.millis 訊息處理器

這是訊息處理器執行下列動作的最長時間:

  • 建立連線並將要求傳送至後端伺服器後,等待接收後端伺服器的回應。
  • 等待通訊端準備就緒,以便訊息處理器將要求傳送至後端伺服器。

如果後端伺服器在這段逾時期間內沒有回應,訊息處理器就會逾時。

這個屬性適用於在這個訊息處理器上執行的所有 API Proxy。

此屬性的預設值為 55 seconds

您可以按照「在訊息處理器上設定 I/O 逾時」一文的說明修改這項屬性,也可以在 API 代理層級設定 io.timeout.millis 屬性,藉此覆寫這個值。

事前準備

使用本文中的步驟前,請務必瞭解下列主題:

在 API Proxy 中設定 I/O 超時

您可以在下列 API Proxy 位置設定 I/O 逾時:

  • 目標端點
  • ServiceCallout 政策

在 API Proxy 的目標端點中設定 I/O 超時

本節說明如何在 API Proxy 的目標端點中設定 I/O 超時。您可以透過 io.timeout.millis 屬性設定 I/O 逾時,這個屬性代表以毫秒為單位的 I/O 逾時值。

  1. 在 Edge UI 中,選取要設定新 I/O 逾時值的特定 API Proxy。
  2. 選取要修改的特定目標端點。
  3. TargetEndpoint 設定的 <HTTPTargetConnection> 元素下方,新增 io.timeout.millis 屬性並提供適當值。
  4. 舉例來說,如要將 I/O 逾時時間變更為 120 秒,請新增下列程式碼區塊:

        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>

    由於 io.timeout.millis 屬性是以毫秒為單位,因此 120 秒的值為 120000

    以下範例說明如何在 API Proxy 的目標端點設定中設定 I/O 超時:

    使用後端伺服器網址的目標端點設定範例

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <URL>https://mocktarget.apigee.net/json</URL>
        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
      </HTTPTargetConnection>
    </TargetEndpoint>

    使用目標伺服器的目標端點設定範例

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="target1" />
          <Server name="target2" />
        </LoadBalancer>
        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
  5. 儲存對 API Proxy 所做的變更。

在 API Proxy 的 ServiceCallout 政策中設定 I/O 超時

本節說明如何在 API Proxy 的 ServiceCallout 政策中設定 I/O 逾時。您可以透過 <Timeout> 元素或 io.timeout.millis 屬性設定 I/O 超時。<Timeout> 元素和 io.timeout.millis 屬性都代表以毫秒為單位的 I/O 逾時值。

您可以使用下列任一方法,在 ServiceCallout 政策中設定 I/O 逾時:

  • <Timeout> 元素。
  • io.timeout.millis 屬性。

逾時元素

如要使用 <Timeout> 元素在 ServiceCallout 政策中設定 I/O 逾時,請按照下列步驟操作:

  1. 在 Edge UI 中,選取要為 ServiceCallout 政策設定新 I/O 逾時值的特定 API Proxy。
  2. 選取要修改的特定 ServiceCallout 政策。
  3. <ServiceCallout> 設定下方新增 <Timeout> 元素,並提供適當值。

    舉例來說,如要將 I/O 逾時時間變更為 120 秒,請新增下列程式碼行:

        <Timeout>120000</Timeout>

    由於 <Timeout> 元素是以毫秒為單位,因此 120 秒的值為 120000

    以下範例說明如何使用 <Timeout> 元素,在 ServiceCallout 政策中設定 I/O 逾時:

    使用後端伺服器網址的 ServiceCallout 政策設定範例

    <ServiceCallout name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <Timeout>120000</Timeout>
        <HTTPTargetConnection>
            <Properties/>
            <URL>https://mocktarget.apigee.net/json</URL>
        </HTTPTargetConnection>
    </ServiceCallout>
  4. 儲存對 API Proxy 所做的變更。

io.timeout.millis 屬性

如要使用 io.timeout.millis 屬性在 ServiceCallout 政策中設定 I/O 逾時,請按照下列步驟操作:

  1. 在 Edge UI 中,選取要為 ServiceCallout 政策設定新 I/O 逾時值的特定 API Proxy。
  2. 選取要修改的特定 ServiceCallout 政策。
  3. 在 TargetEndpoint 設定的 <HTTPTargetConnection> 元素下方,新增 io.timeout.millis 屬性並提供適當值。

    舉例來說,如要將 I/O 逾時時間變更為 120 秒,請新增下列程式碼區塊:

        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>

    由於 io.timeout.millis 屬性是以毫秒為單位,因此 120 秒的值為 120000

    以下範例說明如何在 API Proxy 的目標端點設定中設定 I/O 逾時:

    使用後端伺服器網址的 ServiceCallout 政策設定範例

    <ServiceCallout name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <HTTPTargetConnection>
          <Properties>
            <Property name="io.timeout.millis">120000</Property>
          </Properties>
          <URL>https://mocktarget.apigee.net/json</URL>
        </HTTPTargetConnection>
    </ServiceCallout>

    使用目標伺服器的 ServiceCallout 政策設定範例

    <ServiceCallout enabled="true" name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <Response>calloutResponse</Response>
        <HTTPTargetConnection>
            <LoadBalancer>
                <Server name="target1" />
                <Server name="target2" />
            </LoadBalancer>
            <Properties>
                <Property name="io.timeout.millis">120000</Property>
            </Properties>
            <Path>/test</Path>
        </HTTPTargetConnection>
    </ServiceCallout>
  4. 儲存對 API Proxy 所做的變更。

在訊息處理器上設定 I/O 逾時

本節說明如何設定訊息處理器的 I/O 逾時。您可以透過 HTTPTransport.io.timeout.millis 屬性設定 I/O 逾時,該屬性代表訊息處理器元件上的 I/O 逾時值 (以毫秒為單位),並使用 如何設定 Edge 中所述語法的權杖。

如要在訊息處理器上設定 I/O 逾時,請按照下列步驟操作:

  1. 在訊息處理器電腦上,使用編輯器開啟下列檔案。如果該目錄不存在,請建立該目錄。
    /opt/apigee/customer/application/message-processor.properties

    舉例來說,如要使用 vi 開啟檔案,請輸入下列指令:

    vi /opt/apigee/customer/application/message-processor.properties
  2. 在屬性檔案中新增一行,格式如下,並將 TIME_IN_MILLISECONDS 替換為值:
    conf_http_HTTPTransport.io.timeout.millis=TIME_IN_MILLISECONDS

    舉例來說,如要將訊息處理器的 I/O 逾時時間變更為 120 秒,請新增下列程式碼:

    conf_http_HTTPTransport.io.timeout.millis=120000
  3. 儲存變更。
  4. 確認屬性檔案是由 apigee 使用者擁有,如下所示:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. 如下所示重新啟動訊息處理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. 如果您有多個訊息處理器,請在所有訊息處理器上重複上述步驟。

驗證訊息處理器的 I/O 逾時

本節說明如何確認訊息處理器上的 I/O 逾時已成功修改。

即使您使用權杖 conf_http_HTTPTransport.io.timeout.millis 在訊息處理器上設定 I/O 逾時,仍須確認實際屬性 HTTPTransport.io.timeout.millis 是否已設為新值。

  1. 在訊息處理器電腦上,搜尋 /opt/apigee/edge-message-processor/conf 目錄中的 HTTPTransport.io.timeout.millis 屬性,並檢查是否已設定新值,如下所示:
    grep -ri "HTTPTransport.io.timeout.millis" /opt/apigee/edge-message-processor/conf
  2. 如果成功在訊息處理器上設定新的 I/O 逾時值,上述指令就會在 http.properties 檔案中顯示新值。
  3. 將 I/O 逾時時間設為 120 秒後,上述指令的範例結果如下:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPTransport.io.timeout.millis=120000

    在上述範例輸出內容中,請注意屬性 HTTPTransport.io.timeout.millis 已在 http.properties 中設定為新值 120000。這表示訊息處理器上的 I/O 超時已成功設定為 120 秒。

  4. 如果屬性仍顯示舊值,請確認您已正確按照「在訊息處理器上設定 I/O 逾時」一文中的所有步驟操作。HTTPTransport.io.timeout.millis如果遺漏任何步驟,請再次正確重複所有步驟。
  5. 如果仍無法修改 I/O 超時,請與 Apigee Edge 支援團隊聯絡。

後續步驟

瞭解如何 在路由器上設定 I/O 超時