Как отправить сообщение в формате RFH2?
Вопрос
Мне нужно вводить сообщения в IBM MQ с помощью JMeter.
Формат должен быть RFH2. Мне нужно установитьFormat
поле на пустое, а также изменить содержимое заголовка.
Какой тип объекта JMeter мне следует использовать для этого?
Не могли бы вы мне помочь? Большое спасибо.
Обновление № 1
Благодаря ответу @DmitriT я могу отправить сообщение в очереди.
Однако кажется, что содержимое заголовка помещается не в заголовок, а перед сообщением. Ниже приведен пример:
Журналы сервера с сообщением, отправленным с помощью MQ Visual Edit
Заголовок
2020-04-21 11:07:59.913 DEBUG 48093 --- [DefaultMessageListenerContainer-2]
c.b.i.c.listeners.AbstractAgiListener : Receive message on MQ with header : {someargs,
jms_destination=queue:///myqueue, someargs, Sender=mysender, someargs, jms_type=mcd://jms_byte,
someargs}
Сообщение
<Document ...>...</Document>
Журналы сервера с сообщением, отправленным с помощью JMeter
Заголовок
2020-04-21 11:07:59.913 DEBUG 48093 --- [DefaultMessageListenerContainer-2]
c.b.i.c.listeners.AbstractAgiListener : Receive message on MQ with header : {someargs}
Сообщение
RFH ¨ÿÿÿþ ¸ <mcd><Msd>jms_bytes</Msd></mcd> 8<jms><Dst>queue:///myqueue</Dst>
<Pri>0</Pri></jms> <usr><Sender>mysender</Sender></usr><Document ...>...</Document>
Есть идеи, как это решить, пожалуйста? Спасибо.
1 ответ
"Объект JMeter", который вы должны использовать, - это JSR223 Sampler.
- Загрузите соответствующую версию библиотеки com.ibm.mq.allclient (с зависимостями) и перетащите ее в JMeter Classpath
- Перезапустите JMeter, чтобы поднять библиотеки
- Добавьте сэмплер JSR223 в свой план тестирования
Создайте сообщение в соответствии с вашими требованиями и опубликуйте его в очереди. Код ссылки:
import com.ibm.mq.MQAsyncStatus import com.ibm.mq.MQMessage import com.ibm.mq.MQPutMessageOptions import com.ibm.mq.MQQueueManager import com.ibm.mq.constants.CMQC import com.ibm.mq.constants.MQConstants import com.ibm.mq.headers.MQRFH2 def mqProps = new Hashtable<String, Object>() mqProps.put(MQConstants.CHANNEL_PROPERTY, 'DEV.APP.SVRCONN') mqProps.put(MQConstants.PORT_PROPERTY, 1414) mqProps.put(MQConstants.HOST_NAME_PROPERTY, '192.168.99.100') def qManager = 'QM1' def queueName = 'DEV.QUEUE.1' def qMgr = new MQQueueManager(qManager, mqProps) def openOptions = MQConstants.MQOO_OUTPUT | MQConstants.MQOO_INPUT_AS_Q_DEF def queue = qMgr.accessQueue(queueName, openOptions) def pmo = new MQPutMessageOptions() pmo.options = MQConstants.MQPMO_ASYNC_RESPONSE def message = new MQMessage() def rfh2 = new MQRFH2() rfh2.setEncoding(CMQC.MQENC_NATIVE) rfh2.setCodedCharSetId(CMQC.MQCCSI_INHERIT) rfh2.setFormat(CMQC.MQFMT_STRING) rfh2.setNameValueCCSID(1208) rfh2.setFieldValue('your', 'data', 'here') rfh2.write(message) queue.put(message, pmo) queue.close() MQAsyncStatus asyncStatus = qMgr.getAsyncStatus() log.info('Successfully published: ' + asyncStatus.putSuccessCount + ' message(s)')
Ссылки: