2013-05-06 3 views
0

Я хочу установить jms messageId в последовательности 1,2,3 .... при отправке сообщения Jms в HornetQ. Но когда я пытался настроить свой настроенный MessageID на JMS-сообщение на конечный потребитель, MessageID того же сообщения JMS отличается. при этом я обнаружил, что JMS MessageID имеет определенный формат. Итак, как мне настроить свой настроенный MessageID?jmsMessage.setJMSMessageID (...) не работает? (Как настроить настроенный messageID на сообщение JMS?)

ответ

1

Согласно API Docs,

http://docs.oracle.com/javaee/5/api/javax/jms/Message.html#setJMSMessageID%28java.lang.String%29

JMS-провайдеров установить поле MESSAGEID, когда сообщение было отправлено.

Вы не можете переопределить идентификатор сообщения, установленный поставщиком JMS, своим собственным JMSMessageID до отправки сообщения. Есть ли особая причина, по которой вы хотите установить свой собственный идентификатор сообщения?

Если вы хотите контролировать последовательность, возможно, вы можете рассмотреть возможность хранения такой информации внутри содержимого самого сообщения или в качестве свойства сообщения.

+0

Да, вы можете настроить индивидуальный JMSMessageID, но это можно сделать только после отправки сообщения. Это может произойти со стороны отправителя после отправки сообщения или со стороны приемника после получения сообщения. Обратите внимание, что получатель никогда не сможет получить индивидуальный JMSMessageID, несмотря ни на что. –

+0

, так что нет смысла настраивать JMS-сообщение JID после отправки сообщения, если потребитель не будет читать тот же идентификатор сообщения. Фактически мое требование такое же, как и msgID (настраивается), как корреляция ответа msg ..... как сделать я это достигаю? –

+0

Вы не можете манипулировать JMSMessageID вообще. Попробуйте настроить контент, который вам нужен, в самом теле сообщения JMS. Например, вы можете поместить содержимое: «custom-id: 12345», а затем прочитать это значение из тела сообщения. Таким образом, вам не нужно касаться заголовка JMSMessageID вообще. –

0

Я использую setJMSCorrelationID для установки пользовательского идентификатора. На конце приемника вы можете использовать getJMSCorrelationID для получения того же самого.