Queue-Monitoring Agent

  • Thread starter Thread starter Craig Buchanan
  • Start date Start date
C

Craig Buchanan

I am trying to develop a queue-monitoring agent. The queue will be either
MSMQ or Amazon's SQS. The message will contain instructions on how a worker
should process (could be lengthy) a file (could be large). The agent's
timing mechanism is disabled until all messages are processed. Currently,
this worker processes messages synchronously. I would like to use a pool of
worker to process the messages asynchronously. The challenge, I am finding,
is how to wait for the pool's next free worker. I've included the
pseduo-code for review. Any thoughts on the pattern would be appreciated.
Thanks,

Craig Buchanan

<SINGLE WORKER>

Sub Timer_Elapsed

disable timer

'drain the queue
while queue has messages

get next message from the queue

process the message synchronously

loop

enable timer

End Sub

</SINGLE WORKER>

<POOL OF WORKERS>

Sub Timer_Elapsed

disable timer

'drain the queue
wait for the next free worker from pool

get the next message from the queue

process the message asynchronously, on another thread

loop

enable timer

End Sub

Sub Processed As IAsyncResult

return the worker to the pool

End Sub

</POOL OF WORKERS>
 
Back
Top