event based scheduling and queues

10gR2 on linux

We have a queue that accepts xml documents.  Documents are members of
sets.  No document can be processed unless the entire set has been
enqueued.  We indicate this by a 'isLastInSet' attribute in the
payload.  We were hoping to set an event based job that is triggered
this attribute having a 'true' value.

In testing this out we discovered that events can be ignored when the
job that wakes up is already active.  We ran a loop that enqueued
20,000 items that all had isLastInset = 'true'.  The action in the job
was to simply insert a row into a table.  After executing the test,
there were only 224 rows inserted.  This obviously leaves open the
possibility that many items will be left unprocessed.

We need a solution that ensures all sets are processed as soon as the
last set member is enqueued.

Has anyone had similar requirements?  ...and if so, what was the
implementation?  did you have a polling process that wakes up every so
often and evaluates the entire queue?

thanks,
chris
--
http://www.freelists.org/webpage/oracle-l


Other related posts: