JMeter JMS Publisher: получение JMSMessageId (сгенерированного во время выполнения) в заголовке и использование его в качестве значения другого свойства JMS перед публикацией

В JMeter у меня есть сэмплер JMS Publisher, настроенный на отправку сообщения в удаленную очередь. Сообщение успешно публикуется в удаленной очереди, работающей на сервере ActiveMQ Artemis, и в прослушивателе дерева результатов просмотра (запрос -> заголовки запроса) я вижу некоторые свойства JMS (которые я установил в разделе «Свойства JMS» сэмплера JMS Publisher). . Однако некоторые из этих свойств заголовка, которые я вижу, я никогда не устанавливал (они неявно устанавливаются сэмплером JMS Publisher): JMSMessageId, JMSTimestamp, JMSType, JMSExpiration.

JMSMessageId выглядит следующим образом:

JMSMessageId     ID:ip-100-100-100-100.eu-west-1.compute.internal-44444-1111111111111-2:2:2:1:1

Я понимаю, что этот заголовок JMSMessageId генерируется во время выполнения, и правила его создания зависят от поставщика JMS. Он может быть уникальным только для текущей установки сервера сообщений или может быть универсальным.

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
61
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В подавляющем большинстве случаев messageId и корреляция не связаны.

Взгляните на документацию:

Использование идентификатора корреляции

Идентификатор корреляции используется для корреляции ответные сообщения с сообщениями запроса, когда приложение вызывает операция запрос-ответ. С помощью WebSphere® MQ и WebSphere MQ JMS вы можете коррелировать, используя либо идентификатор корреляции, либо идентификатор сообщения. В В большинстве случаев вызывающий абонент позволяет администратору очередей выбрать идентификатор сообщения и ожидает, что приложение скопирует этот идентификатор сообщения в корреляцию Идентификатор ответного сообщения. Но есть и другие возможности. А вызывающий абонент может указать конкретное значение в идентификаторе корреляции и ожидать это значение будет скопировано в идентификатор корреляции ответа. Звонящий может также потребоваться, чтобы идентификатор сообщения запроса был копируется в идентификатор сообщения ответного сообщения.

Поэтому вместо того, чтобы пытаться получить значение, сгенерированное системой или библиотекой MQ, вы можете каким-то образом предварительно сгенерировать его и установить самостоятельно. В этом случае вы можете использовать Контроллер while для ожидания, пока сообщение не появится в очереди, и Контроллер транзакций для измерения времени сквозной обработки сообщения.

Ответ принят как подходящий

Чтобы получить JMSMessageID, сгенерированный для сообщения провайдером, вам необходимо вызвать getJMSMessageID(). Однако, чтобы использовать это значение для другого заголовка или свойства сообщения, вам придется вызвать этот метод перед отправкой сообщения. Проблема в том, что назначенное провайдером значение JMSMessageID недоступно до тех пор, пока сообщение не будет отправлено. В JavaDoc для getJMSMessageID() указано:

Когда метод send или publish возвращает значение, он содержит значение, назначенное поставщиком.

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

Другие вопросы по теме