I wound up working on the same problem at the same time (probably for the same person…)
When working with the MSMQ adapter, keep in mind that you must reference the Microsoft.BizTalk.Adapter.MSMQ.MsmqAdapterProperties.dll
to have access to MSMQ-specific properties. (The list of properties available
is in the adapter
Why? The intellisense in the expression shape (when using the parentheses syntax on
messages, ports, etc.) is looking for classes derived from Microsoft.XLANGs.BaseTypes.PropertyBase
to present in the drop down list. Some of those classes are part of your “native”
BizTalk installation, some are provided by add-on adapters, and (of course) some are
provided by property schemas that you develop. A reference to the containing
assembly is necessary to find them.
Other things to note relative to the MSMQ adapter:
For dynamic send ports, the syntax can look like: SomePort(Microsoft.XLANGs.BaseTypes.Address)
In the case of dynamic send ports, the runtime will use non-transactional sends by
default. If you want transactional sends, you will need to set the transactional
property: outboundMsg(MSMQ.Transactional) = true;
Transactional messages which fail to deliver to the remote queue will be found in
the local Transactional Dead Letter queue. No error will be raised by the adapter.
This may mean that your design requires acknowledgement messages to achieve what you
are looking for.