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

Sorry for the delayed response!

Unfortunately, I get the error:
Create object failed! :P

I'm familiar with cgi and Perl, as well as MS technolgies, but using them together is still tricky..

As usual, any ideas/code/suggestions welcome!
Anonymous Monk.

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: CGI to MSMQ
by meredith (Friar) on Jun 16, 2003 at 12:41 UTC
    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
      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\