Apr 29, 2010 at 3:07 PM
Edited Apr 30, 2010 at 6:27 AM
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
(updated, clarified method where trace output came from)