Transactional Remote Receive

 

Applies To: Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server Technical Preview, Windows Vista

Transactional remote receive is defined as a transactional receive of a message from a remote queue. Previously, this feature was not available in Message Queuing (MSMQ), and Microsoft also recommended avoiding nontransactional remote receives unless absolutely necessary.

However, there are cases in which a transactional remote receive is necessary. For example, a single message queue receives work orders, and applications on other computers read these work orders and process them. If one of the applications is unable to process a work order, we want the work order to be returned to the queue, rather than dropped.

Previously, you could emulate a transactional remote receive by writing a "dispatcher" application that read messages from a central queue and sent them to clients.

MSMQ 4.0, however, introduces transactional remote receive as a native feature. An application that wants to perform a transactional remote receive can simply perform the remote receive in the context of a local Distributed Transaction Coordinator (MS DTC) transaction. Transactional remote receive is not supported for internal MSMQ transactions.

Configuration Issues

To use transactional remote receive, you need to configure both the queue computer and the client computer to enable network DTC access. The steps to do this are as follows:

  1. Open the Control Panel, open Administrative Tools, and open Component Services.

  2. In Component Services, in the left pane, click the Component Services node, then click the Computers node. In the right pane, right-click My Computer and select Properties from the context menu. This will open the My Computer Properties dialog.

  3. In the My Computer Properties dialog, select the MSDTC tab, and click the Security Configuration... button in the Transaction Configuration group at the lower left. This will open the Security Configuration dialog.

  4. In the Security Configuration dialog, check the Network DTC Access checkbox. This will enable the Client and Administration and Transaction Manager Communication groups.

  5. In the Transaction Manager Communication group, check the Allow Inbound and Allow Outbound check boxes, and select the Mutual Authentication Required radio button.

  6. Click OK to close the Security Configuration dialog. This will pop up a DTC Console Message dialog that asks if you want to stop and restart the MS DTC service. Click Yes.

  7. Click OK to close the My Computer Properties dialog.

You also need to configure Windows Firewall to add MS DTC to the list of exceptions. The steps to do this are as follows:

  1. Open the Control Panel and open Windows Firewall.

  2. In the Windows Firewall dialog, select the Exceptions tab.

  3. Click the Add Program... button and add Msdtc.exe, which is typically found in your Windows\System32 directory.