Query Microservice
您可使用 Query Microservice 來卸載 ThingWorx 伺服器,方法是允許在相同或不同實體電腦上的單獨流程中發生查詢執行。建議在下列情況下使用 Query Microservice
您的系統使用的查詢會載入並擷取非常大量的記憶體中資料,而導致系統速度變慢或系統當機。
您的系統因大量查詢作為處理的一部份執行而變慢且無回應。
* 
儘管 Query Microservice 會減少系統在 ThingWorx 伺服器上的處理量,但查詢執行仍可有能因處理大量資料而導致服務停擺。
功能
Query Microservice 在 ThingWorx 8.4.0 及更新版本中支援 PostgreSQL、MSSQL 與 InfluxDB 資料提供者。
Query Microservice 僅支援值串流。
Query Microservice 可在與 ThingWorx 相同的電腦上執行,或在不同的電腦上執行。
資料庫游標支援:可以透過 <queryservice.serialisation PageSize> 選項啟用。若啟用,來自資料庫的查詢結果會以此大小的區塊分批傳回,而非一次全部傳回。這樣就不會為伺服器記憶體帶來過大的負載,服務停擺的機率也會降低。預設為 0,這表示沒有游標。
位置
Query Microservice 可在 PTC 支援入口網站找到。
安裝與組態
欲使用 Query Microservice,必須設定安全性憑證才能提供 ThingWorx 與Query Microservice 之間的通訊。這項操作需要使用 ThingWorx 安全性管理工具Query Microservice 必須使用在發佈封裝中提供的指令集安裝。應依照下列步驟安裝及配置 Query Microservice
* 
此程序假設已安裝 ThingWorx。如有必要,請參閱 安裝 ThingWorx
1. PTC 支援入口網站取得 Query Microservice
2. 執行 Query Microservice 安裝程式 (Windows 為 .qms-1.0-windows-installer.exe,Linux 為 qms-1.0-linux-x64-installer.run)。安裝程式「安裝」畫面即會顯示。按一下「下一步」
* 
如果使用 Linux,安裝程式會包含需要可執行檔權限的 .run 檔案。欲設定這些項目,請執行以下內容:
chmod +x qms-installer-file-name.run
* 
如果您將安裝程式作為 ./qms-installer-file-name.run 執行,安裝程式就會在圖形模式下執行。欲在文字模式下執行,請執行以下內容:
./qms-installer-file-name.run --mode text
3. 在「安裝目錄」欄位中,指定安裝位置。按一下「下一步」
4. 新增 ThingWorx 伺服器的位置與要連線的應用程式金鑰。按一下「下一步」
5. 按一下「完成」
6. 使用下列參數建立 Query Microservice 組態檔案,並提供檔案名稱。在此範例中,檔案名為 qms-security.props。更新 password-file-pathpath 的值。
* 
這些位置可以是任何目錄,但必須符合 Query Microservice application.properties 檔案中的值。keystore.jks 檔案應在 path 目錄之下,keystore-password 檔案應在 password-file-path目錄之下。如果這些目錄不存在,則會建立這些目錄。
* 
權限需求:
這些目錄必須存在,且必須可由執行「安全性管理工具」的使用者寫入。
執行 Query Microservice 的使用者必須擁有讀取權限。
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "/QmsPasswordDir"
password-file-name = "qms-keystore-password"
path = "/QmsKeysotreDir"
name = "qmskeystore.jks"
}
}
}
7. PTC 支援網站取得「安全性管理指令行工具」。
* 
如需有關此工具的詳細資訊,請參閱 安全性管理工具
8. 在指令行執行安全性工具時請使用 ThingWorx 組態檔案來產生金鑰。
* 
在此範例中,金鑰名稱為 qmsAesEncryptionKey
./security-common-cli qms-security.props generate-key qmsAesEncryptionKey
9. 執行 security-common-cli 取得產生的 qmsAesEncryptionKey 加密金鑰,予以複製並儲存。您可以透過下列步驟將該金鑰插入到 ThingWorx 金鑰庫中:
./security-common-cli qms-security.props get qmsAesEncryptionKey

Loading config from file qms-security.props
7qT1lf6adY+UvV8hq/xxxx==
10. 為安全性管理工具建立組態檔案,並提供該檔案的名稱 (在本例中名為 twx-security.props)。更新 password-file-pathpath 的值。
* 
keystore.jks 檔案應在 path 目錄之下,keystore-password 檔案應在 password-file-path目錄之下。
* 
權限需求:
這些目錄必須存在,且必須可由與您一起執行安全性管理工具的使用者寫入。
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128

keystore {
password-file-path = "/ThingworxPlatform"
password-file-name = "keystore-password"
path = "/ThingworxStorage"
name = "keystore.jks"
}
}
}
11. qmsAesEncryptionKey 插入到 ThingWorx 金鑰庫:
./security-common-cli twx-security.props set qmsAesEncryptionKey OBTAINED_KEY_ABOVE
12. 核對 Query Microservice application.properties 檔案中的組態符合安全性工具組態檔案中的組態。
13. 使用指令行工具,將新產生的應用程式金鑰新增至 application.properties,或將其新增至 Query Microservice keystore。如需詳細資訊,請參閱下方的 組態參數。例如:
./security-common-cli qms-security.props set qmsThingworxAppKey <Application key>
14. 執行下列指令,來執行位於 query-micro-service-1.0.0 目錄的 Query Microservice
* 
核對它具有可執行權限。
Linux:

./bin/query-micro-service.sh
Windows:
bin\query-micro-service
15. 如有必要,請核對 Query Microservice 已成功安裝。
* 
服務會在 Composer 中建立名為 remoteQueryService 的新物件。只要 remoteQueryService 物件存在於平台中,且處於使用中狀態,就無法在 ThingWorx 伺服器上執行查詢。欲在 ThingWorx 伺服器上執行查詢,您必須手動刪除 remoteQueryService 物件。
* 
欲核對 remoteQueryService 物件是否處於使用中狀態,您可以在 Composer 中檢視實體名稱旁的圖示。服務的連線情況如下圖所示:
下圖中的紅色圖示表示未連線。
組態參數
Query Microservice 中包含 application.properties 檔案,該檔案會在您解壓縮提供的 TAR 或 ZIP 檔案之後置於 config 目錄下。如果您不使用預設值,Query Microservice 的組態參數會列在下方,且必須在執行服務之前配置:
參數
描述
預設值
queryserviceMinthread
用戶端 (Query Microservice) 用來處理傳入訊息的執行緒數目下限。如果所有執行緒都忙於處理訊息,則會將其他傳入訊息排入佇列,最多到 queryservice.queuesize 指定的數字。佇列滿後,其他執行緒會增加到針對 queryservice.maxthread 定義的值。
4
queryserviceMaxthread
用戶端 (Query Microservice) 用來處理傳入訊息的執行緒數目上限。
10
queryserviceQueuesize
QueueSize 是在將更多執行緒加到執行緒集區之前,佇列可以保留的傳入訊息數。如果已在使用中的執行緒數目達到上限,會拒絕新的傳入訊息。
1000
queryserviceSerialisationPageSize
資料庫游標擷取大小。預設為已禁用分頁。建議大小為 5000。
0
thingworxUri
ThingWorx 伺服器主機 URI 與埠。
ws://localhost:8080/Thingworx/WS
qmsThingworxAppKey
用來連線到 ThingWorx 伺服器的應用程式金鑰。它必須在 ThingWorx 中建立才能執行 microservice。
安全性參數
參數
描述
default-encryption-key-length
用於加密金鑰的預設長度。
password-file-path
Query Microservice keystore 密碼檔案的絕對路徑。
password-file-name
金鑰庫密碼檔案名稱。
path
Query Microservice keystore 檔案的絕對路徑。
name
金鑰庫檔案名稱。