2010-11-04 30 views
8

En general, se desaconseja usar la identificación de mensaje devuelta por el proveedor de JMS como la id de correlación con la que se publica un mensaje en una cola. ¿Cómo han generado las personas sus identificadores de correlación para una arquitectura de solicitud/respuesta?Creación de una ID de correlación JMS

+0

Es? La especificación menciona específicamente usar la ID del mensaje como ID de correlación. Luego dice que "en algunos casos" una aplicación puede necesitar rodar su propia ID de correlación. –

+0

revisa este enlace. http://www.theserverside.com/discussions/thread.tss?thread_id=44779 – onejigtwojig

+0

Ah, entonces usted está tratando con el incumplimiento de las especificaciones. La especificación exige la capacidad de establecer este campo, por lo que si mueve MsgID a CorrelID y el valor cambia, no es compatible. En un proveedor compatible, esto funcionaría según lo previsto porque el MsgID sería único, incluso en todos los motores de mensajes, y podría establecer de manera confiable el CorrelID. Sí, probablemente necesites rodar el tuyo. –

Respuesta

2

Los clientes pueden usar un estándar de ID único como UUID para generar una nueva ID. Here es un buen tutorial para usted.

Puede devolver el ID de correlación del proveedor JMS utilizando el siguiente código.

message.setJMSCorrelationID(UUID.randomUUID().toString()); 
producer.send(message); 
LOG.info("jms-client sent:" + message.getJMSCorrelationID()); 

Cheers.

1

del lado del servidor generación ID de correlación adolece de dos problemas sin embargo:

  1. unidireccionales protocolos (como JMS) no tienen ningún medio directo de devolución del ID correlación de vuelta al cliente. Se podría usar otro canal pero que complica las cosas.

  2. Los problemas inesperados pueden impedir que el cliente reciba la ID generada aunque se haya aceptado la solicitud y se haya procesado en el servidor. Esta es la razón por la cual se debe considerar la generación de ID de cliente en .

cliente generado identificadores de correlación

Los clientes pueden utilizar un estándar único de identificación como UUID para generar un nuevo ID

message.setJMSCorrelationID(UUID.randomUUID().toString()); 

Ref: http://blogs.mulesoft.com/dev/anypoint-platform-dev/total-traceability/

Cuestiones relacionadas