Sending message to transactional MSMQ queue

I am having problems sending an MSMQ message to the transactional queue. If the queue is non-transactional, everything is fine, but for the transactional ones, seems like the action does not fail, but the message does not appear in the queue after the action successfully finished.

I am using Automise 2.0.0.162.

Any thoughts?

Thank you.

 

 

Hi Edgar,

You are correct that currently the MSMQ Send Message action only supports sending messages to non-transactional queues. The messages you are sending actually end up on the system dead-letter queue.

The main reason why this is not supported is that to send a message to a transactional queue, you would normally need to wrap in a transaction - hence there would need to be actions to create, commit, rollback transactions. At the moment these are not available.

However, I see that it is possible to send a message so that it is sent as a single internal transaction. I'll find out if we can modify the action so that it does this, instead.

Regards,

Angus

Hi Edgar,

We now have a test build of Automise which supports sending messages to transactional queues as single internal transactions. Please let us know if there’s anything else we can help you with.

You can download the test build here:

http://www.automise.com/downloads/automise/200/AT200_164.exe

Regards,

Angus

Thanks for the reply. Do you have any idea when the 2.0.0.164 build will be "official"?

 

Hi Edgar,

I'm not sure. We did an official release fairly recently, so possibly not for a month or two. If you install 164 and experience problems then you can always roll back to 162.

Regards,

Angus

Angus, I just installed build 164, and it is, indeed, able to send messages to the local transactional queue. However, when I try to send a message to the remote queue, I get this error:

"An error occured while sending the message: The specified format name does not support the requested operation. For example, a direct queue format name cannot be deleted."

If that matters at all, I am using the DIRECT=OS format name for the queue. I am able to send messages to that same queue using the following VBScript code (running in Automise, no less )

Set msmqInfo = CreateObject("MSMQ.MSMQQueueInfo")
msmqInfo.FormatName = "DIRECT=OS:" & "some_valid_path"

Set msmqMessage = CreateObject("MSMQ.MSMQMessage")
msmqMessage.Label = "label"
msmqMessage.Body = "body"

'Create Qand send a message
Set msmqQ = msmqInfo.Open(2, 0)
msmqMessage.Send msmqQ, 3

msmqQ.Close
Set msmqMessage = Nothing
Set msmqQ = Nothing

Can you please take a look?

Hi Max,

The MSMQ actions check the "Transactional" property on the created queue object to see if it is a transactional queue. It appears that in the case of Direct named queues, this property is not supported.

I'll change the action to bypass the problem. In the meantime, if it's possible for you to rename the queue so it doesn't used the DIRECT format, then you can work around the problem that way.

Regards,

Angus

Hi Max,

If you get a chance, could you please download this test build and let us know if it resolves the issue?

http://www.automise.com/downloads/automise/200/AT200_165.exe

I’m still seeing some strange behaviour on my test machine, although I suspect it may be the MSMQ settings in use here.

Regards,

Angus