En esta sección se describen algunos problemas habituales que pueden surgir cuando se desarrollan flujos de mensajes. Contiene consejos para resolver los problemas:
Si no es el autor de los UDN, puede suprimir estos archivos. El autor o proveedor debe proporcionar la versión 5.0 de estos UDN en formato de un dispositivo y plug-in de Eclipse. El plug-in debe contener iconos, traducción, definición de la paleta, menú emergente, ayuda, y así sucesivamente.
Para obtener más información, consulte la sección Preferencias del editor y valores localizados.
/flow2/schema1/SAMPLE.conxmi no se puede cargar. Se ha informado del siguiente error: schema1/SAMPLE.conxmi
Esta costumbre es beneficiosa porque la referencia transferida da soporte a la asistencia de contenido y la validación de ESQL. Las propiedades de contenido del tipo de mensaje open, o bien open defined no se utilizan en la validación y se presupone que esta propiedad está closed (cerrada).
Hay una preferencia del editor de ESQL que le permite seleccionar omitir las discrepancias en las consultas de mensajes o bien imporrtarlas como un aviso o un error. Por omisión, se informa sobre este tipo de problema como un aviso, para que pueda seguir difundiendo el flujo de mensajes.
Este error hace que el mensaje se dirija al terminal de anomalías.
Tal vez haya conectado accidentalmente el terminal de anomalías del nodo MQInput a un nodo sucesivo en vez de hacerlo al terminal de salida. El terminal de salida es el terminal intermedio de los tres. Se descartan los mensajes dirigidos a un terminal de salida no conectado.
Si se ha conectado el terminal de anomalías del nodo MQInput, por ejemplo, a un nodo MQOutput, estos mensajes no aparecerán.
La conexión de un nodo a un terminal de anomalías de cualquier nodo indica que ha designado el flujo de mensajes responsable de todo el proceso de errores. Si conecta un terminal de anomalías a un nodo MQOutput, el flujo de mensajes omite los errores que se puedan producir.
Para obtener más información, consulte la sección Utilización del rastreo.
Esta acción produce una entrada de rastreo de usuario de cada nodo que el mensaje visite y sólo de dichos nodos.
En las plataformas distribuidas, puede recuperar las entradas de rastreo utilizando el mandato mqsireadlog, formatearlas utilizando el mandato mqsiformatlog y visualizar los registros formateados para comprobar la vía de acceso del mensaje a través del flujo de mensajes. Para obtener más información sobre estos mandatos, consulte la sección Mandatos.
Para z/OS, edite y envíe el trabajo BIPJLOG en COMPONENTPDS para ejecutar mqsireadlog y mqsiformatlog para procesar rastreos. Para obtener más información sobre los mandatos del programa de utilidad, consulte la sección Trabajos de programas de utilidad de z/OS.
Envíe del mensaje de nuevo al flujo de mensajes. El nivel de rastreo de depuración genera mucha más información detallada sobre por qué el mensaje está tomando esta ruta, y encontes, se pueden determinar las razones de las acciones realizadas por el flujo de mensajes.
No olvide desactivar el rastreo cuando haya resuelto el problema o sino, el rendimiento resultará perjudicado.
En general:
Si el flujo de mensajes tiene vías de acceso que no son anomalías, pero que no finalizan en una cola de salida (u otro almacenamiento permanente) store), indica que el flujo de mensajes no ha fallado y el mensaje no se restituye ni se transfiere a un destino alternativo (por ejemplo, el terminal de captación, la cola de mensajes no entregados o la cola de restitución de la cola).
SQL0954C No hay suficiente almacenamiento en el almacenamiento dinámico de la aplicación para procesar la sentencia.En z/OS, se podría devolver un SQLSTATE de HY014 con un código SQL de -99999, indicando que el proceso DataFlowEngine ha alcanzado el límite de proceso de DB2 z/OS de 254 manejadores de sentencias SQL preparadas.
Por motivos de rendimiento, una vez preparada la sentencia, la sentencia y el manejador se guardan en una antememoria para reducir el número de llamadas a la función SQLPrepare. Si la sentencia ya se encuentra en la antememoria, se devuelve el manejador de sentencias para que se pueda volver a ejecutar con parámetros recién enlazados.
La serie de caracteres de la sentencia se utiliza para realizar la búsqueda de antememoria. Utilizando series de caracteres SQL codificados en fábrica que son ligeramente diferentes para cada mensaje, la sentencia no se encuentra en la antememoria y siempre se ejecuta una función SQLPrepare (y se abre un nuevo cursor ODBC). Cuando utilice sentencias PASSTHRU, utilice marcadores de parámetros para que se pueda utilizar la misma sentencia de SQL para cada mensaje procesado, con los parámetros enlazándose durante la ejecución. Este método es más eficaz en términos de recursos de base de datos y, para las sentencias que se ejecutan reiteradamente, es más rápido.
No obstante, siempre es posible utilizar marcadores de parámetros o tal vez desee crear dinámicamente series de caracteres de sentencias SQL durante la ejecución. Esto conduce potencialmente a que muchas sentencias SQL exclusivas se coloquen en antememoria. La antememoria propiamente dicha no aumenta demasiado ya que estas sentencias generalmente no son por sí mismas grandes, pero muchas asignaciones de memorias pequeñas pueden producir lafragmentación de memoria.
Para un flujo de mensajes determinado, un nodo habitual requiere aproximadamente 2KB del espacio de pila de la hebra. Por omisión, hay por consiguiente, un límite de aproximadamente 500 nodos dentro de un único flujo de mensajes en la plataforma UNIX y 1000 nodos en la plataforma Windows. Este límite podría ser mayor o menor, dependiendo del tipo de proceso que se esté realizando dentro de cada nodo.
El valor de esta variable de entorno se aplica a los intermediarios; por consiguiente, se utiliza MQSI_THREAD_STACK_SIZE para cada hebra que se crea dentro de un proceso DataFlowEngine. Si al grupo de ejecución tiene demasiados flujos de mensajes se le han asignado demasiados flujos de mensajes y se establece un valor MQSI_THREAD_STACK_SIZE grande, el proceso DataFlowEngine necesitará una gran cantidad de almacenamiento para la pila.
Aunque un flujo de mensajes de 500 nodos puede parecer un límite grande inalcanzable, podría ejecutar todos estos nodos colocando un bucle en el flujo de mensajes o conectando un terminal de salida adecuado a un terminal de entrada de un nodo que se produzca antes en el flujo. Podría decidir hacerlo cuando se procesen registros sucesivos dentro de un mensaje. El bucle de retorno se controlaría mediante un nodo de filtro comprobando los registros restantes, y un nodo de cálculo que mantiene un recuento del número de registros procesados. Visualmente, el flujo podría estar formado de un número pequeño de nodos. No obstante, en cada repetición del bucle, los nodos dentro del bucle se ejecutan como nodos nuevos dentro de un orden secuencial. El número de nodos dentro del bucle, multiplicado por el número de repeticiones del bucle, podría alcanzar el límite de 500 nodos.
No utilice el bucle cableado; para ello, aumento el valor MQSI_THREAD_STACK_SIZE,. Si necesita repetir en bucle un flujo de mensajes para procesar registros periódicos por ejemplo, utilice la sentencia ESQL PROPAGATE. Permitirá que se realice el bucle dentro de un nodo de cálculo y permitirá que continúe el resto del flujo de mensajes, antes de volver al punto en el nodo de cálculo donde se ha efectuado la llamada de propagación. Esto también significa que sólo es necesario transferir un registro periódico al resto del flujo a la vez. Cuando el proceso vuelve al nodo Propagating Compute, se libera el conjunto anterior de árboles de salida. Desde una perspectiva de uso de la pila, no hay aumento de la pila porque el flujo de mensajes se desbobina hasta el punto en el que se emitió la llamada PROPAGATE. Sólo una repetición del bucle actual permanece en la pila en total a la vez.
Video_Test#FCMComposite_1_1 ComIbmMQInputNode , Video_Test.VIDEO_XML_IN
JITC_COMPILEOPT=SKIP{org/eclipse/ui/views/tasklist/TaskListContentProvider}{resourceChanged}
Si necesita analizar o modificar los datos contenidos dentro de un mensaje WebSphere MQ Everyplace, utilice un MQeMbMsgObject. Este proporciona un paralelo con los mensajes de WebSphere MQ estándar: puede establecer campos como por ejemplo, ID de correlación, y hay un campo que se puede analizar utilizando cualquier analizador de WebSphere Business Integration Message Broker.
Conceptos relacionados
Mensajes de WebSphere MQ Everyplace
Flujos de mensajes
Tareas relacionadas
Desarrollo de aplicaciones de flujos de mensajes
Manejo de errores en flujos de mensajes
Utilización del rastreo
Solución de problemas
Acceso al árbol Propiedades
Referencia relacionada
WebSphere MQ Mobile Transport
Flujos de mensajes
Nodo MQInput
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
au16530_ |