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) を実行します。インストーラのセットアップ画面が表示されます。「Next」をクリックします。
* 
Linux を使用している場合、インストーラには実行のアクセス許可を必要とする .run ファイルが含まれています。これらを設定するには、以下を実行します。
chmod +x qms-installer-file-name.run
* 
インストーラを ./qms-installer-file-name.run として実行した場合、グラフィカルモードで実行されます。テキストモードで実行するには、以下を実行します。
./qms-installer-file-name.run --mode text
3. 「Installation Directory」フィールドで、インストール場所を指定します。「Next」をクリックします。
4. ThingWorx サーバーの場所と、接続に使用するアプリケーションキーを追加します。「Next」をクリックします。
5. 「Finish」をクリックします。
6. 以下のパラメータを含む Query Microservice コンフィギュレーションファイルを作成し、このファイルに名前を付けます。この例では、ファイル名は qms-security.props です。password-file-pathpath の値を更新します。
* 
これらの場所には任意のディレクトリを指定できますが、Query Microserviceapplication.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 Microserviceapplication.properties ファイル内のコンフィギュレーションが、セキュリティツールコンフィギュレーションファイル内のコンフィギュレーションと一致していることを確認します。
13. 新しく生成されたアプリケーションキーを application.properties に追加するか、コマンドラインツールを使用して Query Microservice キーストアに追加します。詳細については、以下の コンフィギュレーションパラメータを参照してください。以下に例を示します。
./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 という新規 Thing が作成されます。remoteQueryService Thing がプラットフォームに存在してアクティブな状態であるかぎり、ThingWorx サーバーでクエリーは実行されません。ThingWorx サーバーでクエリーを実行するには、remoteQueryService Thing を手動で削除する必要があります。
* 
remoteQueryService Thing がアクティブであることを確認するには、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 サーバーへの接続に使用するアプリケーションキー。Microservice を実行する前に ThingWorx 内に作成されている必要があります。
セキュリティパラメータ
パラメータ
説明
default-encryption-key-length
暗号化キーに使用されるデフォルトの長さ。
password-file-path
Query Microservice キーストアパスワードファイルへの絶対パス。
password-file-name
キーストアパスワードファイルの名前。
path
Query Microservice キーストアファイルへの絶対パス。
name
キーストアファイルの名前。