您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
本文說明如何設定 Apigee 邊緣訊息處理器的 I/O 逾時。
訊息處理器上的 I/O 逾時,代表訊息處理者等待接收來自後端伺服器的回應,或讓通訊端準備將要求寫入後端伺服器的時間,直到逾時為止。
訊息處理器 I/O 逾時的預設值為 55 seconds
。此逾時期間適用於目標端點設定中指定的後端伺服器,以及 API Proxy 的 Service 呼叫 政策中。
您可以根據自己的需求,提高或降低訊息處理器的 I/O 逾時值 (預設值:55 seconds
)。可在以下位置進行設定:
- 在 API Proxy 中
- 目標端點
- 服務摘要政策
- 在訊息處理器上
下列屬性可控制訊息處理器的 I/O 逾時:
資源名稱 | 位置 | 說明 |
---|---|---|
io.timeout.millis
|
API Proxy:
|
訊息處理器會在這段時間內執行以下作業:
如果後端伺服器在這個逾時期間內沒有回應,訊息處理器就會逾時。
根據預設,這個屬性會採用在訊息處理器上為 如果針對特定 API Proxy 以新的逾時值修改這項屬性,則只有該 API Proxy 會受到影響。 |
HTTPTransport.io.timeout.millis
|
訊息處理器 |
訊息處理器會在這段時間內執行以下作業:
如果後端伺服器在這個逾時期間內沒有回應,訊息處理器就會逾時。 這項屬性會用於這個訊息處理器中執行的所有 API Proxy。
此屬性的預設值為
您可以依照「設定訊息處理器的 I/O 逾時」一文的說明修改這個屬性,也可以在 API Proxy 層級設定 |
事前準備
使用本文件中的步驟前,請務必瞭解下列主題:
- 如果不熟悉 I/O 逾時,請參閱「
目標端點傳輸屬性規格」中的
io.timeout.millis
屬性說明。 - 如果不熟悉設定 Edge 的 Private Cloud 屬性,請參閱 如何設定 Edge。
- 請務必遵循 設定 I/O 逾時的最佳做法中的建議。
在 API Proxy 中設定 I/O 逾時
您可以在下列 API Proxy 位置設定 I/O 逾時:
- 目標端點
- 服務摘要政策
設定 API Proxy 目標端點的 I/O 逾時
本節說明如何在 API Proxy 的目標端點中設定 I/O 逾時。您可以透過屬性 io.timeout.millis
設定 I/O 逾時,代表 I/O 逾時值 (以毫秒為單位)。
- 在 Edge UI 中,選取要用來設定新的 I/O 逾時值的特定 API Proxy。
- 選取您要修改的特定目標端點。
- 在
TargetEndpoint
設定的<HTTPTargetConnection>
元素下方,為含有適當值的屬性io.timeout.millis
。 - 儲存對 API Proxy 所做的變更。
舉例來說,如要將 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>
在 API Proxy 的服務呼叫政策中設定 I/O 逾時時間
本節說明如何在 API Proxy 的服務呼叫政策中設定 I/O 逾時。您可透過 <Timeout>
元素或 io.timeout.millis
屬性設定 I/O 逾時。<Timeout>
元素和 io.timeout.millis
屬性都以毫秒為單位代表 I/O 逾時值。
您可以使用以下其中一種方法,在 Service callout 政策中設定 I/O 逾時:
<Timeout>
元素。io.timeout.millis
屬性。
逾時元素
如要使用 <Timeout>
元素設定 Service callout 政策中的 I/O 逾時,請按照下列指示操作:
- 在 Edge UI 中,選取要在當中設定 Service Call 政策新的 I/O 逾時值的特定 API Proxy。
- 選取要修改的特定 Service callout 政策。
- 在
<ServiceCallout>
設定下新增含適當值的元素<Timeout>
。舉例來說,如要將 I/O 逾時調整為 120 秒,請新增以下這行程式碼:
<Timeout>120000</Timeout>
由於
<Timeout>
元素以毫秒為單位,因此 120 秒的值為120000
。以下範例說明如何在服務呼叫政策中使用
<Timeout>
元素設定 I/O 逾時:範例:使用後端伺服器的網址服務呼叫政策設定
<ServiceCallout name="Service-Callout-1"> <DisplayName>ServiceCallout-1</DisplayName> <Timeout>120000</Timeout> <HTTPTargetConnection> <Properties/> <URL>https://mocktarget.apigee.net/json</URL> </HTTPTargetConnection> </ServiceCallout>
- 儲存對 API Proxy 所做的變更。
io.timeout.millis 屬性
如要使用 io.timeout.millis
屬性設定 Service Call 政策中的 I/O 逾時,請按照下列指示操作:
- 在 Edge UI 中,選取要在當中設定 Service Call 政策新的 I/O 逾時值的特定 API Proxy。
- 選取要修改的特定 Service callout 政策。
- 在 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 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>
使用目標伺服器的 Service Call 政策設定範例
<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>
- 儲存對 API Proxy 所做的變更。
設定訊息處理器的 I/O 逾時
本節說明如何設定訊息處理器的 I/O 逾時。您可以透過屬性 HTTPTransport.io.timeout.millis
設定 I/O 逾時,屬性代表訊息處理器元件中的 I/O 逾時值 (以毫秒為單位),請按照「如何設定 Edge」一節所述的語法使用符記。
如要設定訊息處理器的 I/O 逾時,請按照下列步驟操作:
- 在訊息處理器電腦上,在編輯器中開啟下列檔案。如果尚未存在,請建立一個。
/opt/apigee/customer/application/message-processor.properties
舉例來說,如要使用
vi
開啟檔案,請輸入下列指令:vi /opt/apigee/customer/application/message-processor.properties
- 在屬性檔案中加入以下格式的一行,並將 TIME_IN_MILLISECONDS 取代為值:
conf_http_HTTPTransport.io.timeout.millis=TIME_IN_MILLISECONDS
舉例來說,如要將訊息處理器的 I/O 逾時變更為 120 秒,請新增下列程式碼:
conf_http_HTTPTransport.io.timeout.millis=120000
- 儲存變更。
- 確認屬性檔案為
apigee
使用者所有,如下所示:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- 按照下方說明重新啟動訊息處理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 如果您有多個訊息處理器,請對所有訊息處理器重複上述步驟。
驗證訊息處理器的 I/O 逾時
本節說明如何驗證訊息處理器是否已成功修改 I/O 逾時。
即使您使用權杖 conf_http_HTTPTransport.io.timeout.millis
設定訊息處理器的 I/O 逾時,仍須驗證實際的 HTTPTransport.io.timeout.millis
屬性是否已設定新的值。
- 在訊息處理器機器中,在
/opt/apigee/edge-message-processor/conf
目錄中搜尋HTTPTransport.io.timeout.millis
屬性,然後查看是否已以新的值設定,如下所示:grep -ri "HTTPTransport.io.timeout.millis" /opt/apigee/edge-message-processor/conf
- 如果在訊息處理器中成功設定新的 I/O 逾時值,上述指令就會在
http.properties
檔案中顯示新的值。 - 如果還是看到屬性
HTTPTransport.io.timeout.millis
的舊值,請確認您已按照正確設定訊息處理器的 I/O 逾時一文所述的所有步驟操作。如果錯過任何步驟,請再次正確重複所有步驟。 - 如果仍無法修改 I/O 逾時,請與 Apigee Edge 支援團隊聯絡。
將 I/O 逾時設為 120 秒之後,上述指令的範例結果如下:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPTransport.io.timeout.millis=120000
請注意,在上述輸出範例中,請注意 http.properties
中的新值 120000
已設為 HTTPTransport.io.timeout.millis
屬性。這表示訊息處理器的 I/O 逾時已成功設為 120 秒。
接下來呢?
瞭解如何 設定路由器的 I/O 逾時