Oracle Advanced Queues and .NET

Over on the Code Project, CastorTiu posted an article about using Oracle Advanced Queues from within .NET. I missed the article when it posted about a month ago, but I'm sure it will be interesting to .NET developers who use Oracle in mission-critical or transaction processing apps.

Earlier in 2005, I think Oracle re-named the feature we know as "Advanced Queuing" into "Streams Advanced Queuing". Definitely an upgrade there. For those seeking clues, here's Oracle's hi-level whitepaper on Advanced Queueing. (PDF)

Oracle hasn't included AQ support in the ODP.NET managed provider for .NET. (anyone know if the ODP.NET for .NET Framework 2.0 will include AQ support?) So basically, when trying to connect to AQ from .NET, the answer has been, "you can't get there from here." Castor's solution uses a managed C++ library, written on Oracle Object 4 OLE (OO4O), as well as some code-gen.   

Ok, I know, I know, I can see the acronyms floating above your head in little bubbles: "OLE? WTF? NFW!" Look, OLE isn't evil, it's just an old name. Don't get too uppity. And - bonus - OO4O includes support for SQ. The solution Castor delivered uses the AQ support within OO4O runtime, but it doesn't depend on COM or OLE, it uses a managed C++ shim on top of Oracle's C DLL. 

Castor says he tried it with Oracle 9i and with 10g, and it worked.

It doesn't look like a finished product, but this is something that could be useful if your shop depends on Oracle AQ.