Improving Message Latency Between Solicit Response Ports

Posted: March 8, 2010  |  Categories: BizTalk Uncategorized

Low latency optimization of BizTalk server has been described here . This blog will  describe a ‘real world‘ optimization of the following interchange;

  • A two way WCF basic HTTP receive location
  • The request is consumed by an orchestration.
  • The request is then sent to two way WCF custom SQL send adapter via a XML transmit pipeline.
  • The response from the  two way WCF custom SQL send adapter is consumed by the orchestration via a XML receive pipeline.
  • The WCF custom SQL adapter response is then mapped to WCF basic HTTP response required for the two way WCF basic HTTP receive location.
  • Finally  the orchestration sends the response  via PassThruTransmit pipeline to the two way WCF basic HTTP receive location.

The average message latency for this interchange is 1.484 seconds as shown in the table below in column 2. (N.B. All numbers in this post are from a development VM and better numbers should be observed in a production environment. We are only compating apples with apples in this post.)

How can we improve this? The first thing to do is to remove orchestration so that we have a messaging only scenario. To do this ;

  1. The XML transmit pipeline has to be changed a custom receive pipeline that promotes BTS.Operation = “sp_GetQuoteDetails” to the context of the incoming message. This required or else the send port will not understand the required action.
  2. The two way WCF custom SQL send adapter must be bound to the  two way WCF basic HTTP receive location in some way. You can use a filter on BTS.Receive port name or BTS.Operation.
  3. The map between the WCF custom SQL adapter response and the WCF basic HTTP response is place on the inbound map property of the two way WCF custom SQL send adapter.

 

Now the average message latency for this interchange is 0.922 seconds as shown in the table below in column 3.

Can we improve this further? Yes, if you change the send pipeline on the two way WCF custom SQL send adapter from a XML receive pipeline to a PassThruTransmit pipeline the average message latency for this interchange is now 0.771seconds as shown in the table below in column 4.

Finally what happens if tune the BizTalk server for low latency? the average message latency for this interchange is  now 0.533 seconds as shown in the table below in column 5.

In summary when want to improve message latency;

  • first think about whether you really need to use an orchestration
  • secondly place the maps on ports rather than in an orchestration if you can.
  • thirdly think about what sort of pipeline you need on your ports.
  • finally tune your BizTalk server for low latency.

 

Message latency ( seconds)
Orchestration  Yes No No No
Send pipeline on send port XML Transmit XML Transmit PassThrough transmit PassThrough transmit
BTS tuned for low latency No No No Yes
Observation_1 1.734 0.922 0.859 0.469
Observation_2 1.515 1.016 0.891 0.609
Observation_3 0.781 0.844 0.641 0.719
Observation_4 1.574 1.032 0.641 0.344
Observation_5 1.719 0.906 0.891 0.485
Observation_6 1.765 0.984 0.641 0.625
Observation_7 1.469 0.843 0.922 0.422
Observation_8 1.157 0.906 0.672 0.422
Observation_9 1.437 1.031 0.891 0.422
Observation_10 1.687 0.735 0.656 0.812
Mean 1.484 0.922 0.771 0.533
Max 1.765 1.032 0.922 0.812
Min 0.781 0.735 0.641 0.344
turbo360

Back to Top