miércoles, septiembre 28, 2011

Asegurar envío únicos de mensajes por HTTP

En el caso se querer asegurar que no se procesen mensajes duplicados enviados por HTTP, se puede añadir el parámetro "msgguid" al final de la URL de llamada al servicio (válido para los mensajes enviados en modo EO o EOIO). En caso de que PI reciba 2 mensajes con el mismo ID, automáticamente devolverá un mensaje 500 informando de la duplicidad del mensaje. Un ejemplo de URL con ID es el siguiente:

http://sap-ag.com:8088/sap/xi/adapter_plain?service=sender&namespace=urn%3Asap-ag%2Ecom&interface=%2Fsap%2Forders&qos=EO&msgguid=3c61f6c1-2f1e-2dd1-e100-00000a1145ab

El formato del contenido del campo es de 32 caracteres hexadecimales separados por guiones de la siguiente manera:: 3c61f6c1-2f1e-2dd1-e100-00000a1145ab (en la RFC 4122 viene especificado cómo obtener un ID de este tipo) En el caso de los mensajes asignados por PI, el último bloque suele identificar al servidor PI (00000a1145ab) y los bloques predecesores corresponden a la codificación del timestamp (3c61f6c1-2f1e-2dd1-e100)..

Si dicho ID de mensaje es enviado más de una vez, PI devolverá un error 500 similar al siguiente:




Lo cual también se refleja en el canal de comunicación:

 


Referencias:

No hay comentarios: