Я работаю над интеграцией через JMS, используя JmsTemplate
из Spring Framework.Я хочу выполнить синхронный (т.е. блокирующий) вызов к внешней системе.Я прочитал, что для этого я должен использовать CorrelationID.Спецификация JMS гласит:
Клиент может использовать поле заголовка JMSCorrelationID для связи одного сообщения с другим.Обычно используется для связывания ответного сообщения с его сообщением-запросом.
Таким образом, он явно предлагает использовать CorrelationID для шаблона запроса / ответа.
Я также обнаружил, что JmsTemplate
имеет sendAndReceive
метод, который был разработан для достижения аналогичной цели.sendAndReceive
использует внутренне doSendAndReceive
, что в соответствии с javadoc :
Отправляет сообщение-запрос на указанное место назначения и блокируется до получения ответа во временной очереди, созданной в-The-Fly.
Теперь я действительно смущен.Имеет ли заголовок CorrelationID что-то общее с заголовком ReplyTo.Это два разных способа добиться синхронного вызова?Или, может быть, оба должны использоваться вместе?Простые разъяснения на простом английском языке были бы более чем желательны.