Question

I’m looking to introduce SS Service Broker,

I have a remote orders database and a local processing database, all activity on the processing database has to happen in sequence, this seems a perfect job for Service Broker!

I’ve set up the infrastructure, I can send and receive messages and now I’m looking at the design of the processing. As I said all processes for one order need to be completed in sequence so I’ll put them in one conversation.

One of these processes is a request for external flat file data, we then wait (could be several days) and then import and process this file when it returns. How can I process half the tasks, then wait for the flat file to return before processing the other half.

I’ve had some ideas but I’m sure I’m missing a trick somewhere

1) Write all queue items to a status table and use status values – seems to remove some of the flexibility of SSSB and add another layer of tasks

2) Keep the transaction open until we get the data back – not ideal

3) Have the flat file import task continually polling for the file to appear – this seems inefficient

What is the most efficient way of managing this workflow? thanks in advance

Was it helpful?

Solution

In my opinion it is like chain of responsibility. As far as i can understand we have the following workflow.

1.) Process for message.

2.) Wait for external file, now this can be a busy wait or if external data provides you a notification then we can actually do it in non-polling manner.

3.) Once data is received then process the data.

So my suggestion would be to use 3 different Queues one for each part, when one is done it will forward or put a new message in chained queue.

I am assuming, one order processing will not disrupt another order processing.

I am thinking MSMQ with Windows Sequential Work flow, might also be a candidate for this task.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top