2010-11-04 4 views
8

Обычно не рекомендуется использовать идентификатор сообщения, возвращаемый поставщиком JMS, в качестве идентификатора корреляции, с которым сообщение публикуется в очереди. Как люди генерируют свои идентификаторы корреляции для архитектуры запроса/ответа?Создание идентификатора корреляции JMS

+0

это? Спецификация конкретно упоминает использование идентификатора сообщения в качестве идентификатора корреляции. Затем он говорит, что «в некоторых случаях» для приложения может потребоваться сворачивать собственный идентификатор корреляции. –

+0

проверьте эту ссылку. http://www.theserverside.com/discussions/thread.tss?thread_id=44779 – onejigtwojig

+0

А - так вы имеете дело с несоблюдением спецификации. Спецификация указывает на возможность установки этого поля, поэтому, если вы переместите MsgID в CorrelID и измените значение, оно не соответствует требованиям. В совместимом провайдере это будет работать так, как предполагалось, потому что MsgID будет уникальным, даже в системах сообщений, и вы можете надежно установить CorrelID. Да, вам, вероятно, нужно катиться самостоятельно. –

ответ

2

Клиенты могут использовать уникальный идентификационный стандарт, например UUID, для создания нового идентификатора. Here - хороший учебник для вас.

Вы можете вернуть идентификатор корреляции из JMS-провайдера, используя следующий код.

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

Cheers.

1

корреляционная генерации ID на стороне сервера страдает от двух проблем, хотя:

  1. Односторонние протоколы (например, JMS) не имеют прямых средств возврата корреляции ID обратно клиенту. Можно использовать другой канал, но , что усложняет ситуацию.

  2. Неожиданные проблемы могут помешать клиенту получать генерируемый идентификатор , даже если запрос принят и обработан на сервере. Именно поэтому необходимо сформировать идентификатор клиента .

Клиентские генерироваться идентификаторы корреляции

Клиенты могут использовать уникальный стандарт ID, как UUID для создания нового ID

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

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

Смежные вопросы