views:

29

answers:

1

Hi 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

A: 

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.

Nitin Midha
Thanks, I can see how it would work
liam