in reply to Re: Re: Re: Re: CGI to MSMQ
in thread CGI to MSMQ

I can't find a MessageQueue object anywhere! I searched around to find out what .dll contains the object you want, and all I can find is that it is part of System.Messaging.dll in the .NET Framework. The only thing is, I've looked at two servers with .NET 1.1 (& MSMQ) and they don't have it. There is another object that seems related, though, it's MSMQ.MSMQQueue; maybe it can serve your purpose? Microsoft provides all the docs for it at MSDN. Actually, you'll probably want to use the MSMQ objects anyway, so you don't waste the time/memory of firing up a .NET CLR object (yes, they're slower, and yes, I hate them :)

As a side note, do you have an entry, System.Messaging.MessageQueue, in your registry under HKEY_CLASSES_ROOT?

HTH

mhoward - at - hattmoward.org

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Re: CGI to MSMQ
by Anonymous Monk on Jun 17, 2003 at 13:27 UTC
    Hmm. No System.Messagging.MessageQueue under HKEY_CLASSES_ROOT, but I have had some limited success.

    use Win32::OLE; my $queueInfo = Win32::OLE->new('MSMQ.MSMQQueueInfo'); $queueInfo->{pathname} = '.\private$\foo'; $queueInfo->Create();
    The preceeding code does actually create the queue, so I know that this set of objects exists and functions. Still, I can't send a message! As I mentioned elsewhere, perhaps the problem is that the queue object I receive from calling $queueInfo->Open(2,0) is unblessed?

    Continuing thanks,
    A.M.

      That's right. System.Messagging.MessageQueue is the name of the .NET Framework class that abstracts the MSMQ API. As you have correctly surmised the ProgId of the object you want is MSMQ.MSMQQueueInfo. You probably want to print out the value of Win32::OLE::LastError() (and possibly $^E) to see why the Open() is failing.

      /J\
      
        print Win32::OLE::LastError();
        Win32::OLE(0.1603) error 0x80020005: "Type mismatch" in METHOD/PROPERTYGET "Open" argument 1
        $^E gives nothing...