MSMQ Adapter Config?

Developer
Apr 29, 2010 at 3:07 PM
Edited Apr 30, 2010 at 6:27 AM

Hi

Bumped into something strange with the MSMQ provider, it seems like it doesn't set the adapter endpoint config. I need to set MSMQ.Transactional=true in order to send a message to an transactional queue.

I've added a trace output in MSMQAdapterProvider.SetEndpointContextProperties(IBaseMessageContext pipelineContext, string endpointConfig) and gets the following trace message from the MSMQ adapter provider: "Adapter setting context with endpoint config Transactional=true" indicating that AdapterMgr.SetContextProperties is beeing called properly.

However when the message is sent it's suspended with error: The specified destination queue ".\private$\msmqtest" is transactional, and the message is being sent is non-transaction. Please check the Transactional property on the send port. I can't find any msmq specific properties in the message context.

Message is sent using messaging only and just a onramp+send itinerary. Endpoint is set using BRE.EXT setting the endpoint configuration to:

  • Transport Type = MSMQ
  • Transport Location = .\private$\msmqtest
  • Endpoint Config = Transactional=true
  • Transport Namespace = msmq 
  • Target Namespace = msmq

Any clues???

cheers

/Henrik

 (updated, clarified method where trace output came from)

Coordinator
May 2, 2010 at 11:46 PM

Ok, the latest source code contains a reverted form of the MSMQ Adapter provider with notes as to why. Please download and verify if you recieve the same issues.


Thanks!!!

Developer
May 6, 2010 at 2:21 PM

Hi

that did the trick, MSMQ endpoint config is now set in a messaging scenario. In orchestrations it didn't work initally but I managed to find the problem, a small issue between SetEndPointContextProperties and WriteToXlangMessage with uppercasing of the property name in the dictionary, uploaded a MSMQAdapterProvider.cs with my fix.

cheers

/Henrik

Nov 25, 2011 at 7:24 PM

Hi Guys,

I retrieved the source code today. I am only interested in the MSMQ Adapter Provider. ALSO, this may be important...I use the ESB Toolkit 2.1 for BizTalk 2010.

I copied out the code and built an assembly; so far everything works. I get messages in my Message Queue, however, I do have one small issue that I cannot seem to resolve.

I copied the MSMQPropertyManifest into the Correct location so the Itinerary Designer could find it. The assembly is registered in the GAC. BUT, when I click the "Endpoint Configuration" in the Itinerary Designer, I get an error... "The adapter named MSMQ does not have a valid manifest file or the file '' was not found." I have seen reference to this error in other posts, but I can't recall seeing a resolution.

I firmly believe I have followed all the correct steps. Even those in the following article. http://msdn.microsoft.com/en-us/library/ff699780.aspx

Any ideas?

Dean Kasa

Coordinator
Jan 12, 2012 at 6:15 PM

You have to retrieve the correct Extensions for ESB 2.1. They can be found here:

http://www.tellagostudios.com/projectfiles/SO-Aware_SDK_1.4.2.zip 

 

I haven't had a chance to update the project on codeplex yet.

Apr 19, 2012 at 11:19 PM

So, After several months of, what I thought was successful usage of the MSMQ adapter provider, I discovered that I wasn't actually successful. Let me explain...

I was experiencing the same issue that Henrik reported regarding the Transactional setting.

I attached the debugger to my running instance if the BizTalk Service, in an effort to see what was happening, and NONE of the methods were being hit. I am now wondering how this thing was working at all. I looked at all the dll's loaded, and COULD NOT find the dll that contained this.

I have the esb.config entry correct. I have the manifest file in the Itinerary Designer folder in the ESB Toolkit folder. What else could be happening?

 

Dean