Introducción
Este documento describe la cantidad máxima de datos que se puede procesar a través de un mensaje de Servicio de entrega de mensajes (MDS) de Intelligent Contact Management (ICM) y la arquitectura subyacente.
Antecedentes
Al realizar búsquedas de base de datos con ICM (utilizando dbworker.exe como proceso para proporcionar la interfaz entre el router y la base de datos externa), hay una cantidad máxima de datos que se puede procesar a través de un mensaje MDS.
La cantidad total de datos de respuesta del lenguaje de consulta estructurado (SQL) + encabezado de respuesta del proceso de trabajo de la base de datos (DBW) no puede superar los 4096 bytes. Este es un límite codificado para un mensaje MDS.
Componentes Utilizados
La información de este documento se basa en la versión 11.6 de ICM
Problema
Si se devolvió demasiada cantidad de datos a dbw desde SQL Server y dbw no puede pasarla al router (RTR), se genera una condición de error similar a esta:
06:33:38:639 ra-dbw Trace: Poner en cola una solicitud de búsqueda
06:33:38:644 ra-dbw Trace: Subproceso DBWorker 4 (tabla ID 5612:Stores_Reception_BT.SRDB_NEW): Solicitud recibida: TransactionID 14583170
06:33:38:658 ra-dbw Trace: Subproceso DBWorker 4 (ID 5612),TransactionID 14583170, Intento de leer el registro:
06:33:38:679 ra-dbw Trace: Subproceso DBWorker 4 (ID 5612),TransactionID 14583170, Correcto.(..)
06:33:38:735 ra-dbw Trace: DBWorker TransactionID 14583170, Error Resultado=10
06:33:38:745 ra-dbw Trace: Poner en cola una solicitud de búsqueda
"10": significa que se han devuelto demasiados datos a dbw desde SQL Server y que dbw no puede pasarlos al RTR
Para imprimir el error, se utiliza este nivel de seguimiento:
dbw trace-level a 3 a través de Portico (trace level 3 sólo se utilizará a recomendación de Cisco TAC) y este trace-level para RTR a través de la herramienta rtrtrace(c:\icm\bin):
Este es un ejemplo de cómo un mensaje MDS está siendo formado por el proceso DBW:
02:22:01:273 ra-dbw Trace: Subproceso DBWorker 2 (tabla ID 15100:ICM_lookup_1): Solicitud recibida: TransactionID 3
02:22:01:273 ra-dbw Trace: Subproceso DBWorker 2 (ID 15100),TransactionID 3, Intento de leer el registro:
02:22:01:273 ra-dbw Trace: Subproceso DBWorker 2 (ID 15100),TransactionID 3, Correcto.
02:22:01:273 ra-dbw Trace: MDS: Introducción de MDSAllocBuffer
02:22:01:273 ra-dbw Trace: SQLConnection::SetupColumnData: Datos de columna para la columna 1 Longitud = 5
02:22:01:273 ra-dbw Trace: SQLConnection::SetupColumnData: Datos de columna para la columna 2 Longitud = 0
02:22:01:273 ra-dbw Trace: SQLConnection::SetupColumnData: Datos de columna para la columna 3 Longitud = 0
02:22:01:273 ra-dbw Trace: MDS: Introducción de MDSSendInput02:22:01:273 ra-dbw Message Trace: Cliente: dbw enviando mensaje al proceso MDS.
EMT: class=2 tipo=1 tamaño corporal=116
MDS: rsrvd=0 hdrsize=16 bodysize=100 src=56 dst=1 priority=alta
MDS: indicadores=02 { side_a } vtime=0006f03b seqno=0000 class=4 tipo=16
0000 03 00 00 00 00 00 00 00 00 |........|
00008 03 00 00 00 8e 13 00 00 |........|
00010 02 00 00 00 00 00 00 00 |........|
00018 00 00 00 00 00 00 00 00 |........|
00020 00 00 00 00 05 00 38 30 |......80|
00028 31 30 34 00 8c 13 00 00 |104.....|
00030 02 00 00 00 00 00 00 00 |........|
00038 00 00 00 00 00 00 00 00 |........|
00040 00 00 00 00 00 00 00 00 |........|
00048 8d 13 00 00 02 00 00 00 |........|
00050 00 00 00 00 00 00 00 00 |........|
00058 00 00 00 00 00 00 00 00 |........
00060 00 00 00 00
En este ejemplo hay 3 columnas como resultado de SQL-query en la tabla configurada, todas las columnas tienen el tipo VARCHAR(50) en la base de datos.
La respuesta contiene 5 bytes de datos de la primera columna y 0 bytes en las otras 2 columnas.
Basado en esa respuesta, dbw forma el mensaje MDS donde cada columna está empaquetada en el campo que consta de 24 bytes de encabezado + 2 bytes de longitud + PAYLOAD + OFFSET.
Si la columna no contiene datos, por ejemplo, Longitud = 0, seguirá ocupando: encabezado de 24 bytes + longitud de 2 bytes + 2 bytes OFFSET = 28 bytes.
Solución
Para solucionar este escenario, querrá quitar las columnas no usadas de las tablas/config o reducir los nombres de las columnas, o reducir los tamaños de los datos de las columnas.
Documentos Relacionados:
https://www.cisco.com/c/en/us/support/docs/customer-collaboration/unified-contact-center-enterprise/116215-configure-dblookup-00.html