Service Virtualization

Expand all | Collapse all

Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

  • 1.  Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 02, 2017 01:50 AM

    Hi,

     

    I have created a test case which contains 2 steps as follows.

     

    1) IBM MQ Native SendReceive: Receives request from Queue1

    2) IBM MQ Native SendReceive: Sends the message to Queue2 along with the correlationid

     

    Every time Step2 is taking 10 seconds time to put the message into Queue2.(There is no wait time or sleep time in this step)

    Ex: There is a message consumed by Step1 at 03:10:00AM; however, step is publishing the message at 03:10:10AM.

     

    Thanks,

    Narasimha.



  • 2.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 03, 2017 11:05 AM

    My best guess this is due to where IMB MQ server setup (Serial processing or Parallel processing) and how this configure to receive and send messages. I have expire in passed sometime network latency also delay response.  

    Alternatively you can test this other tool like SOAP UI using Hermes JMS and see response time to confirm on this.

    https://www.soapui.org/documentation/jms/config.html

     

    Hope this might helpful.

    Thanks,

    Rajesh k Singh



  • 3.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 03, 2017 11:35 AM

    Narasimha,

     

    Did Rajesh's recommendations help you out with this issue?

     

    Regards,

    Reid



  • 4.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 05, 2017 01:10 PM

    A consistent, exactly ten second delay on a send when there is no think time is very suspicious.  Are there any other steps between the two IBM MQ Native Send Receive steps?  You may want to contact support and send us your test case itself or an ITR state from its run, so we can take a look for ourselves.



  • 5.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 07, 2017 07:46 PM

    1) There is no think time

    2) There ar no steps between IBM MQ Native steps

    3) When I run the VS in ITR, it is taking less than 10 seconds

    AND

    Kevin,Could you please look into the following queries aswell.

    - I want to implemetn REPLY TO QMANAGER option using IBM MQ Native step... Please advice on how to implement this?

    - I have created a VS with RR pair and selected Transport protocol as "IBM Native MQ". However, I need to send multiple responses from VSI... how to configure this in Respond step?

     

     

    Thanks a lot for your support in advance.



  • 6.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 07, 2017 09:13 PM

    Are you using a service image?  A service image can also specify think time on a per response basis.  However, the VSI's think time is only honored when the service is deployed to VSE, not when it's run in the ITR.  Have you checked the responses in your service image for think time?  Have you tried deploying your service with 0% think time?

     

    I remember your earlier thread about replyTo.  If you are generating the service from RR pairs or a recording then it should already be able to handle replyTo, including the replyTo Queue Manager.  You can build your own handling for replyTo, but I highly recommend using the functionality we've already built into the product if possible.  If there's a problem or bug with that built in functionality then please contact support and we'll take a look.

     

    The RR pair format allows for multiple responses for each transaction.  See the documentation for more details.  If you build your RR pairs with multiple responses then everything else is already set up to handle them, including the IBM MQ Native Respond step.



  • 7.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 07, 2017 09:55 PM

    In VSI think time is 0 and while deploying the service Think Time Scale is 0%.

     

    I have enabled Correlation Scheme in Respond step and I have selected IBM MQ Payload option from the settings option; however, some MQMD fields are missed while replying to the original request.

     



  • 8.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 07, 2017 11:25 PM

    When you run in the ITR does it respond instantly?  Or is there still a delay, but it's not quite ten seconds?  Are your VSE server and Workstation on the same machine?  It's hard to go further on this without contacting support so we can either see the problem in your environment or get your project and enough version information to try it out ourselves.

     

    What MQMD fields are missing in your response?  Are they present in the VSI response meta-data?  All the correlation scheme does is set the correlation ID.  The rest of the fields come from the response meta-data in your service image.



  • 9.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 08, 2017 01:30 AM

    For first issue I will raise a support case.

    Coming to the second point following are the details present in MQMD header.

     

    Request contains following properties:

    <Entry key="CharacterSet">Value</Entry>
    <Entry key="Format">Value</Entry>
    <Entry key="Priority">Value</Entry>
    <Entry key="Persistence">Value</Entry>
    <Entry key="MessageId">Value</Entry>
    <Entry key="ReplyToQueueName">Value</Entry>
    <Entry key="ReplyToQueueManager">Value</Entry>
    <Entry key="UserId">Value</Entry>
    <Entry key="AccountingToken">Value</Entry>
    <Entry key="PutApplicationType">Value</Entry>
    <Entry key="PutApplicationName">Value</Entry>
    <Entry key="PutDateTime">Value</Entry

     

    Found following parameters in MQMD header while sending response

    <Entry key="CharacterSet">Populated from request</Entry>
    <Entry key="Format">Populated from request</Entry>
    <Entry key="MessageId">Unique value generated by DevTest</Entry>
    <Entry key="CorrelationId">value populated from Request messageid</Entry>
    <Entry key="UserId">value generated by DevTest</Entry>
    <Entry key="PutApplicationType">This value is changed Ex: 28 i.e DevTest is not populating from the request</Entry>
    <Entry key="PutApplicationName">This value is changed Ex: exe i.e DevTest is not populating from the request</Entry>
    <Entry key="PutDateTime">This value is changed Ex:1493958792390 i.e DevTest is not populating from the request</Entry>
    </MQMD>

          Following are the missing tags in MQMD header while sending response
    <Priority>
    <Persistence>
    <ReplyToQueueName>
    <ReplyToQueueManager>

     

    Scenario 3:

    I have created VS with RR pair(One request and 3 responses). As per the requirement, sometimes I have to send 3 responses and sometimes 2 responses based on one filed; however, I am not able to control this response selection. Kindly assist me how can I handle this in Respond step.

    Thanks,

    Narasimha.



  • 10.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step
    Best Answer

    Posted May 08, 2017 08:18 PM

    > <Entry key="PutApplicationType">This value is changed Ex: 28 i.e DevTest is not populating from the request</Entry>
    > <Entry key="PutApplicationName">This value is changed Ex: exe i.e DevTest is not populating from the request</Entry>
    > <Entry key="PutDateTime">This value is changed Ex:1493958792390 i.e DevTest is not populating from the request</Entry>

     

    As far as I know these are not supposed to be copied from the request.  Those fields describe the application that is sending that particular message, DevTest in the case of the response message, and the time at which that response message is sent.  You can override the first two with meta-data properties, but they will not be copied from the request unless you make modifications to the VSM.  The meta-data properties are:

     - msg.putApplicationName

     - msg.putApplicationType

     

    > <Priority>
    > <Persistence>

     

    There are default values for these, and to override those defaults requires you to set meta-data properties in the service image response.  Those meta-data properties are:

     - msg.priority

     - msg.persistence

     

    > <ReplyToQueueName>
    > <ReplyToQueueManager>

     

    Why would you set these on a response message?  Is there something responding to the response?  Again, you can set them in the response with meta-data properties, but copying their values from something in the request requires modifying the VSM.  Those meta-data properties are:

     - msg.replyToQueueName

     - msg.replyToQueueManagerName

     

     > I am not able to control this response selection. Kindly assist me how can I handle this in Respond step.

     

    The way you handle this is by controlling selection.  If there is a field that controls whether two responses are sent or three, then that field needs to be part of the request arguments that the VSI was built with.  There should be a Data Protocol extracting that field and adding it to the request arguments.  That's basically how VSE chooses a response, by using the arguments to differentiate between different transactions.



  • 11.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted May 30, 2017 03:13 AM

    Thanks for the information Kevin.

    Could you please guide me on sending these 3 messages to different queues instead of sending them to single queue.

    Kevin.Bowman

    Thanks,

    Narasimha.



  • 12.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted Jun 01, 2017 01:49 PM

    In the Respond step, there is a '+' button at the bottom right corner of the 'Senders' section.  Use this to add multiple sender entries to the Respond step.  In each entry, enter a unique value for 'Channel Name', and select a queue.

     

    In each response's meda-data, find or create the meta-data property: 'channel.name'.  If this meta-data property is not present, then the response will be sent using the first sender entry in the Respond step.  If this meta-data property is present, then that request will be sent using the Respond step's sender entry with the same channel name.  By giving each response a different 'channel.name' meta-data value, you tell VSE to use a different queue to specified in the Respond step under the sender entry with that channel name, to send that response.



  • 13.  Re: Performance Issue-Taking more time to publish response in IBM MQ Native SendReceive step

    Posted Jun 01, 2017 10:33 PM

    Thanks a lot Kevin. It worked