Как отправить сообщение в формате RFH2? - PullRequest
0 голосов
/ 20 апреля 2020

Вопрос

Мне нужно вставить сообщения в IBM MQ с помощью JMeter.

Формат должен быть RFH2. Мне нужно установить поле Format пустым, а также изменить содержимое заголовка.

Какой тип объекта JMeter мне следует использовать для этого?

Не могли бы вы мне помочь, пожалуйста? Большое спасибо.

Обновление n ° 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 Ответ

1 голос
/ 20 апреля 2020

«JMeter-объект», который вы должны использовать: JSR223 Sampler

  1. Загрузите соответствующую версию библиотеки com.ibm.mq.allclient ( с зависимостями) и поместите его в JMeter Classpath
  2. Перезапустите JMeter, чтобы выбрать библиотеки
  3. Добавить JSR223 Sampler в свой план тестирования
  4. Создайте сообщение в соответствии с вашими требованиями и опубликуйте sh в очереди. Код ссылки:

    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)')
    

Ссылки:

...