Query Microservice
Se puede utilizar Query Microservice para descargar el servidor ThingWorx al permitir que la ejecución de consultas se produzca en un proceso independiente en el mismo ordenador físico o en otro diferente. Se usar recomienda Query Microservice en los siguientes casos:
El sistema utiliza consultas que cargan y recuperan una gran cantidad de datos en memoria que dan lugar a una ralentización o bloqueo del sistema.
El sistema experimenta lentitud y falta de respuesta debido a un gran volumen de consultas que se ejecutan como parte del procesamiento.
* 
Aunque Query Microservice reduce el procesamiento del sistema en el servidor ThingWorx, todavía existe la posibilidad de que la ejecución de la consulta colapse el servicio debido a una gran cantidad de procesamiento de datos.
Características
Query Microservice soporta los proveedores de datos PostgreSQL, MSSQL e InfluxDB en ThingWorx 8.4.0 y versiones posteriores.
Query Microservice solo soporta flujos de valor.
Query Microservice puede ejecutarse en el mismo ordenador que ThingWorx o en otro diferente.
Soporte de cursor de base de datos: se puede activar a través de la opción <queryservice.serialisation PageSize>. Cuando se activa, los resultados de la consulta de la base de datos se devuelven en fragmentos de este tamaño, en lugar de todos a la vez. De este modo, se pone menos carga en la memoria del servidor y hay menos posibilidades de que el servicio se colapse. El valor por defecto es 0, que significa que no hay cursor.
Ubicación
Query Microservice está disponible en el Portal de soporte técnico de PTC.
Instalación y configuración
Para utilizar Query Microservice, se deben configurar credenciales de seguridad con el fin de proporcionar la comunicación entre ThingWorx y Query Microservice. Esto requiere el uso de la herramienta de gestión de seguridad de ThingWorx. Query Microservice debe instalarse con los scripts que se proporcionan en el paquete de distribución. Para instalar y configurar Query Microservice, se deben seguir los siguientes pasos:
* 
Para este proceso se supone que está instalado ThingWorx. Si fuese necesario, consulte Instalación de ThingWorx.
1. Obtenga Query Microservice en el Portal de soporte técnico de PTC.
2. Ejecute el instalador de Query Microservice (.qms-1.0-windows-installer.exe para Windows o qms-1.0-linux-x64-installer.run para Linux). Se muestra la pantalla de configuración del instalador. Pulse en Siguiente.
* 
Si se utiliza Linux, el instalador contiene un fichero .run que requiere permisos ejecutables. Para definirlos, ejecute lo siguiente:
chmod +x qms-installer-file-name.run
* 
Si se ejecuta el instalador como ./qms-installer-file-name.run, se ejecutará en modo gráfico. Para ejecutar en modo de texto, ejecute lo siguiente:
./qms-installer-file-name.run --mode text
3. En el campo del directorio de instalación, especifique la ubicación de instalación. Pulse en Siguiente.
4. Añada la ubicación del servidor ThingWorx y la clave de aplicación para la conexión. Pulse en Siguiente.
5. Pulse en Finalizar.
6. Cree un fichero de configuración de Query Microservice con los siguientes parámetros y proporcione un nombre para el fichero. En este ejemplo, el fichero se denomina qms-security.props. Actualice los valores para password-file-path y path.
* 
Estas ubicaciones pueden ser cualquier directorio, pero deben coincidir con los valores que se encuentran en Query Microservice, en el fichero application.properties. El fichero keystore.jks debe estar ubicado en el directorio path y el fichero keystore-password se debe encontrar en el directorio password-file-path. Si no existen, se crean.
* 
Requisitos de permisos:
Los directorios deben existir y el usuario que ejecuta la Herramienta de gestión de seguridad debe poder escribir en ellos.
El usuario que ejecuta Query Microservice debe tener permiso de lectura.
{
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. Obtenga la herramienta de línea de comandos de gestión de seguridad del sitio de soporte técnico de PTC.
* 
Para obtener más información sobre la herramienta, consulte el tema Herramienta de gestión de seguridad.
8. Ejecute la línea de comandos para la herramienta de seguridad con un fichero de configuración de ThingWorx para generar la clave.
* 
En este ejemplo, el nombre de la clave es qmsAesEncryptionKey.
./security-common-cli qms-security.props generate-key qmsAesEncryptionKey
9. Obtenga la clave qmsAesEncryptionKey generada mediante la ejecución de security-common-cli para obtener la clave de cifrado generada, cópiela y guárdela. Se insertará en el keystore de ThingWorx en los siguientes pasos:
./security-common-cli qms-security.props get qmsAesEncryptionKey

Loading config from file qms-security.props
7qT1lf6adY+UvV8hq/xxxx==
10. Cree un fichero de configuración para la herramienta de gestión de seguridad y proporcione un nombre para el fichero (en este ejemplo se denomina twx-security.props). Actualice los valores para password-file-path y path.
* 
El fichero keystore.jks debe estar ubicado en el directorio path y el fichero keystore-password se debe encontrar en el directorio password-file-path.
* 
Requisitos de permisos:
Estos directorios deben existir y el usuario con el que se ejecuta la herramienta de gestión de seguridad debe tener permisos de escritura en ellos.
{
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. Inserte qmsAesEncryptionKey en el keystore de ThingWorx:
./security-common-cli twx-security.props set qmsAesEncryptionKey OBTAINED_KEY_ABOVE
12. Verifique que la configuración que se encuentra en Query Microservice, en el fichero application.properties, coincide con la configuración en el fichero de configuración de la herramienta de seguridad.
13. Añada la clave de aplicación recién generada a application.properties o añádala al keystore de Query Microservice con la herramienta de línea de comandos. Consulte Parámetros de configuración más abajo, para obtener más información. Por ejemplo:
./security-common-cli qms-security.props set qmsThingworxAppKey <Application key>
14. Ejecute Query Microservice que se encuentra en el directorio query-micro-service-1.0.0 mediante la ejecución de lo siguiente:
* 
Verifique que tiene permisos de ejecución.
Linux:

./bin/query-micro-service.sh
Windows:
bin\query-micro-service
15. Si fuera necesario, verifique que Query Microservice se haya instalado correctamente.
* 
El servicio crea una nueva cosa en Composer denominada remoteQueryService. Siempre que la cosa remoteQueryService exista en la plataforma y se encuentre en estado Activo, las consultas no se ejecutarán en el servidor ThingWorx. Para ejecutar consultas en el servidor ThingWorx, se debe borrar manualmente la cosa remoteQueryService.
* 
Para verificar que la cosa remoteQueryService está activa, se puede observar el icono junto al nombre de entidad en Composer. El servicio está conectado en la siguiente imagen:
En la siguiente imagen, el icono rojo indica que no está conectado.
Parámetros de configuración
Query Microservice contiene un fichero application.properties que se encuentra en el directorio config después de extraer el fichero TAR o ZIP proporcionado. Si no se utilizan los valores por defecto, los parámetros de configuración de Query Microservice se indican a continuación y se deben configurar antes de ejecutar el servicio:
Parámetro
Descripción
Valor por defecto
queryserviceMinthread
El número mínimo de subprocesos que el cliente (Query Microservice) utiliza para procesar los mensajes entrantes. Si todos los subprocesos están ocupados gestionando mensajes, los mensajes entrantes adicionales se ponen en cola, hasta el número especificado en queryservice.queuesize. Cuando la cola esté llena, se añaden subprocesos adicionales hasta el valor definido para queryservice.maxthread.
4
queryserviceMaxthread
El número máximo de subprocesos que el cliente (Query Microservice) utiliza para procesar el mensaje entrante.
10
queryserviceQueuesize
QueueSize es el número de mensajes entrantes que la cola puede contener antes de que se añadan más subprocesos a la agrupación de subprocesos. Si ya están activos el número máximo de subprocesos, se rechazan los nuevos mensajes entrantes.
1000
queryserviceSerialisationPageSize
El tamaño de extracción del cursor de base de datos. Por defecto la paginación está desactivada. El tamaño recomendado es 5000.
0
thingworxUri
El URI y puerto del host del servidor ThingWorx.
ws://localhost:8080/Thingworx/WS
qmsThingworxAppKey
La clave de aplicación que se utiliza para conectarse al servidor ThingWorx. Se debe crear en ThingWorx antes de ejecutar el microservicio.
Parámetros de seguridad
Parámetro
Descripción
default-encryption-key-length
La longitud por defecto que se utiliza para las claves de codificación.
password-file-path
La ruta absoluta del fichero de contraseñas de keystore de Query Microservice.
password-file-name
El nombre de fichero de contraseñas de keystore.
path
La ruta absoluta del fichero de keystore de Query Microservice.
name
El nombre de fichero de keystore.