1

Scene: A company has many factories X, each emits a message to the same receive port in a Biztalk server Y; if all messages are processed without much delay, each will trigger an outgoing message to another system Z.

Problem: Sometimes a factory loses its connection for a half-day or more and, when the connection is reestablished, thousands of messages get emitted. Now, the messages still get processed well by Y (Biztalk can easily handle the load) but system Z can't handle the flood and may lock up and severely delay the processing of all other messages from the other X.

What is the solution? Creating multiple receive locations that permits us to pause one X or another would lose us information if the factory isn't smart enough to know whether the message was received or not.

What is the basic pattern to apply in Biztalk for this problem? Would some throttling parameters help to limit the flow from any one X? Or are their techniques on the end part of Y which I should use instead ? I would prefer this last one since I can be confident that the message box will remember any failures, which could then be resumed.

1 Answer 1

1

When a flood of messages is received from a particular X (say X1), Y should try and combine the messages (removed duplicates, etc.) without any loss of information and then send the messages at pace that Z would be able to handle. All this while messages from other Xs would be processed (by Y) and be sent to Z.

3
  • What mechanism does Biztalk have for throttling (besides the throttling controls that are available on the Administration console) message flow? Jul 2, 2012 at 11:37
  • I.e. how is the pace, to Z, supposed to be controlled? Jul 4, 2012 at 7:44
  • I can't place actual code but I'd suggest firing events at regular intervals (at a speed that Z can handle) and those events should send the processed message Jul 4, 2012 at 8:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.