2

I have a long running workflow service from which I call several Services. One of the services is a long running shared enterprise WCF Service which connects to a legacy system and its throughput is constrained by the underlying legacy system. It is likely that I have hundreds of WF instances in memory when the step to call the shared WCF Service is reached. The WCF Services does not limit instance creation or ration instance creation.

What are the issues I can expect both in my workflow process and in the called WCF service ? Would it help to not directly call the WCF service but queue it and limit the number of calls to the WCF Service based on the WCF service throughput ? If queueing is the way to go what are the out of the box options in workflow for the same ?

Similarly what is an ideal design to manage service availability issues in a workflow ?

competent_tech
  • 44,465
  • 11
  • 90
  • 113
ideafountain
  • 276
  • 2
  • 3
  • 7

1 Answers1

1

In such cases queuing calls to the slower service is a good idea. If you don't the whole system will back up with workflows blocking threads waiting on I/O and eventually you will suffer from thread starvation. Even if you turn on throttling in such cases you only push the problem onto the client applications that are sending messages.

I would consider using Azure ServiceBus Queues or MSMQ

Ron Jacobs
  • 3,279
  • 2
  • 18
  • 16