Jmeter 如何使用RFH2格式发送消息? 问题:

Jmeter 如何使用RFH2格式发送消息? 问题:,jmeter,ibm-mq,mq-visual-edit,Jmeter,Ibm Mq,Mq Visual Edit,我需要使用JMeter在IBM MQ中注入消息 格式应为RFH2。我需要将Format字段设置为空,并更改标题的内容 我应该使用哪种JMeter对象来执行此操作 你能帮我吗?非常感谢 更新编号1 感谢@dmitri-answer,我可以在队列中发送消息 但是,标题内容似乎不是放在标题中,而是放在消息之前。请在下面找到一个示例: 使用MQ Visual Edit发送消息的服务器日志 标题 信息 信息 RFHÿÿÿþ¸jms¸u字节8queue:///myqueue 0 mysender。。。 你

我需要使用JMeter在IBM MQ中注入消息

格式应为RFH2。我需要将
Format
字段设置为空,并更改标题的内容

我应该使用哪种JMeter对象来执行此操作

你能帮我吗?非常感谢

更新编号1 感谢@dmitri-answer,我可以在队列中发送消息

但是,标题内容似乎不是放在标题中,而是放在消息之前。请在下面找到一个示例:

使用MQ Visual Edit发送消息的服务器日志

标题

信息

信息

RFHÿÿÿþ¸jms¸u字节8queue:///myqueue
0 mysender。。。
你知道怎么解决吗?谢谢。

您应该使用的“JMeter对象”是

  • 下载库的相关版本(带依赖项)并将其放到
  • 重新启动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)')
    
    import com.ibm.mq.MQAsyncStatus
    导入com.ibm.mq.MQMessage
    导入com.ibm.mq.MQPutMessageOptions
    导入com.ibm.mq.MQQueueManager
    导入com.ibm.mq.constants.CMQC
    导入com.ibm.mq.constants.MQConstants
    导入com.ibm.mq.headers.MQRFH2
    def mqProps=新哈希表()
    mqProps.put(MQConstants.CHANNEL_属性'DEV.APP.SVRCONN')
    mqProps.put(MQConstants.PORT_属性,1414)
    mqProps.put(MQConstants.HOST_NAME_属性'192.168.99.100')
    def qManager='QM1'
    def queueName='DEV.QUEUE.1'
    def qMgr=新的MQQueueManager(qManager,mqProps)
    def openOptions=MQConstants.MQOO_输出| MQConstants.MQOO_输入_作为_Q_def
    def queue=qMgr.accessQueue(queueName,openOptions)
    def pmo=new MQPutMessageOptions()
    pmo.options=MQConstants.MQPMO_异步_响应
    def message=new MQMessage()
    def rfh2=新的MQRFH2()
    rfh2.setEncoding(CMQC.MQENC_NATIVE)
    rfh2.setCodedCharSetId(CMQC.MQCCSI_继承)
    rfh2.setFormat(CMQC.MQFMT_字符串)
    rfh2.setNameValueCCSID(1208)
    rfh2.setFieldValue('your'、'data'、'here')
    rfh2.write(消息)
    queue.put(消息,pmo)
    queue.close()
    MQAsyncStatus asyncStatus=qMgr.getAsyncStatus()
    log.info('已成功发布:'+asyncStatus.putSuccessCount+'消息'
    
  • 参考资料:


    非常感谢您的回答!因此,根据您提供的代码,我需要创建
    生产者
    消费者
    ?或者只是创建消息并发布,直到得到服务器的响应就足够了?使用此代码,我可以在队列中发送消息。多谢各位。最后一件事。RFH2内容似乎放在消息之前,而不是放在消息头中。我用细节更新了我的问题。再次感谢你。
     <Document ...>...</Document>
    
     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>
    
    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)')