2010-11-04 8 views
8

Es wird generell davon abgeraten, die vom JMS-Provider zurückgegebene Nachrichten-ID als Korrelations-ID zu verwenden, mit der eine Nachricht in einer Warteschlange veröffentlicht wird. Wie haben Menschen ihre Korrelations-IDs für eine Anfrage/Antwort-Architektur generiert?Erstellen einer JMS-Korrelations-ID

+0

Es ist? Die Spezifikation erwähnt ausdrücklich die Verwendung der Nachrichten-ID als Korrelations-ID. Es sagt dann, dass "in einigen Fällen" eine Anwendung möglicherweise Ihre eigene Korrelations-ID rollen muss. –

+0

überprüfen Sie diesen Link heraus. http://www.theserverside.com/discussions/thread.tsss?thread_id=44779 – onejigtwojig

+0

Ah - Sie haben es also mit der Spezifikationsnichtbeachtung zu tun. Die Spezifikation legt fest, dass dieses Feld festgelegt werden kann, wenn Sie MsgID auf CorrelID verschieben und der Wert sich ändert, ist es nicht konform. In einem kompatiblen Provider würde dies wie vorgesehen funktionieren, da die MsgID auch über Message-Engines eindeutig wäre und Sie die CorrelID zuverlässig festlegen könnten. Ja, wahrscheinlich musst du selbst rollen. –

Antwort

2

Clients können einen eindeutigen ID-Standard wie UUID verwenden, um eine neue ID zu generieren. Here ist ein gutes Tutorial für Sie.

Sie können die Korrelations-ID vom JMS-Provider mithilfe des folgenden Codes zurückgeben.

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

Prost.

1

serverseitige Korrelations-ID Generation leidet unter zwei Problemen obwohl:

  1. One-way-Protokolle (wie JMS) haben keine direkte Möglichkeit der Rücksendung der ID Korrelation zu dem Client zurück. Ein anderer Kanal könnte verwendet werden, aber , der Dinge kompliziert.

  2. Unerwartete Probleme können verhindern, dass der Client die generierte -ID erhält, obwohl die Anforderung akzeptiert und auf dem Server verarbeitet wurde. Aus diesem Grund sollte die Client-ID-Generierung berücksichtigt werden.

Client generierte Korrelation IDs

Clients einen eindeutigen ID-Standard wie UUID verwenden kann, eine neue ID

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

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