This document discusses controlled throttling in BizTalk. It describes two approaches to implementing throttling: an aggregator orchestration and a pipeline component. The pipeline component approach is preferred as it minimizes message box hops. The document provides tips for implementation including disabling retries and enabling ordered delivery on send ports. It also covers common pitfalls like built-in throttling violating required values. Finally, it discusses lessons learned like the challenges of achieving exact throughput and introducing latency.
11. First Approach – Aggregator Orchestration
Throttled
Message
Send Port
Normal
Message
Receive Port
Add
Throttling
Context
Business
Rules
Memory Cache
Send Port
Throttling
Orchestration
SingletonBRE Pipeline Framework
Fan-out
13. Second Approach – Pipeline Component
Throttled
Message
Normal
Message
Receive Port
Add
Throttling
Context
Business
Rules
Memory Cache
Send Port
BRE Pipeline Framework
Send Port
Apply
Throttling
Ordered
Delivery
Fan-out
14. Efficient Throttling solutions should minimize or avoid message box hops
It should be applied at the edges of the solution
Receive PortPipeline
Message Box
Send PortPipeline
Implementation Tips
15. Retry must be disabled on the Send Ports
Ordered Delivery must be enabled on the Send Ports
Cluster Hosts for a highly available solution
Implementation Tips
16. Receive PortPipeline Send PortPipeline
Message Box
2-way Send port
Request1
Response1
Request2
Throttling directly on a 2-way Send port will not be efficient
Implementation Tips
17. Two-way send port processing delay overhead, use Loopback Adapter
BTS RCV
Adapter
BTS RCV
Pipeline
Add Throttling Context
Throttled System Message
NULL
Adapter
Throttling Pipeline (Loopback
Per External System)
Adapter
(External
System)
Throttled Message
Throttling Rules + Caching
Normal Message
Clear Cached System Throttle
Clear Cache
Implementation Tips
19. Examples:
Host Queue Size
Database size threshold
Make sure that Built-in Throttling itself will not throttle your system
Custom
Throttling
Throughputs
Built-in Throttling
Thresholds
Common Pitfalls
22. Detect and fine tune platform’s built-in throttling under realistic loads,
early on.
Detect the weak points in the artifacts of your solution under realistic
loads, early on.
Conduct load Testing, at different stages during development.
Common Pitfalls
23. BizTalk built-in throttling is not designed to achieve exact throughput values
Achieving controlled, accurate throttling is very challenging, especially when the latency is
required to be at a minimum
It will introduce inevitable latency to the solution which could be minimized to very small
values, few milliseconds
For guaranteed upper limit throughput only, you could apply the throttling component on
the 3rd party system’s Send Port directly
Lessons Learned
24. More and more service providers are adopting API management.
Final Thoughts
Service Provider
BizTalk Server
Service Consumer
25. You could also Apply API management policies that abide by downstream system’s
governance rules, on the Operation level.
Final Thoughts
Service Provider
BizTalk Server
Service Consumer
GetCustomerInfo()
GetCustomerData()
33. Final Thoughts
Work-in-Progress items in Message box:
“This aspect of BizTalk is critical, as it is not designed to hold too much
information for too long, but to pass the information on and move it out of the
message box.”
– Dan Rosanova - Microsoft BizTalk Server 2010 Patterns