Cannot establish Duplex TCP/IP connection

Topics: Developer Forum, User Forum
Mar 23, 2010 at 3:41 PM

First post so please forgive me I haven't supplied all relevent information initially

I'm trying to configure Biztalk2006 R2 on a customer site to use a Duplex TCP/IP connection and whilst it receives and processes the inbound message ok the outbound Acknowledgement message fails because a Duplex connection cannnot be established.

Server A has Biztalk installed and configured to use TCP/IP in Duplex mode. Party has been created with the IP address of Server B which is sending the data (via Ensemble) to Server A Port 5008. When the Biztalk service is started on Server A port 5008 is created and receives message from Server B. At which point I get an application messages like this. Please note that I've changed the server names.

Event Type: Information
Event Source: TcpAdapter
Event Category: None
Event ID: 0
Date:  08/01/2010
Time:  14:36:27
User:  N/A
Computer: Server A

Description:
08/01/2010 14:36:27.968: 17: A receive location with address TCP://PICTS259:5008 has been added to the TCP receive adapter.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Event Type: Error
Event Source: TcpAdapter
Event Category: None
Event ID: 0
Date:  08/01/2010
Time:  14:36:29
User:  N/A
Computer: Server A
Description:
08/01/2010 14:36:29.734: 45: A general error has occurred.  The exception message associated with the error is: The BizTalk Party for hostname Server b.path1.path2.path3.path4.UK could not be found, even resolving against the IP address(es) of the host.  Unable to complete setting up the duplex listener.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Event Type: Error
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5649
Date:  08/01/2010
Time:  14:36:29
User:  N/A
Computer: Server A
Description:
The receive location "Receive Location5" with URL "TCP://Server A:5008" is shutting down. Details:"The BizTalk Party for hostname Server B.path1.path2.path3.path4.UK could not be found, even resolving against the IP address(es) of the host.  Unable to complete setting up the duplex listener.".

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

Biztalk then 'kills' the 5008 port

Both servers are Virtual Servers running in VMWare

This has run succesffully 'in house' with Server A and Server B as Virtual PC VMs using the TCP Client utility to send the message and receive the response.

Are there any known issues with Duplex setup on VMware virtual servers? Are there any network settings I should check on the customers servers?

Thank you in advance for any suggestions.

Andy

  

Coordinator
Jun 2, 2010 at 12:52 PM

BTSNTSvc.exe Error: 0 : 27/04/2010 14:49:45.344: 43: A general error has occurred.  The exception message associated with the error is: The BizTalk Party for hostname <removed identity> could not be found, even resolving against the IP address(es) of the host.  Unable to complete setting up the duplex listener.

 

So, in order for data to be sent back down the socket connection that is currently open to the receive location, you need to use a Send Port that has been configured to send to a BizTalk Party that has been set up configured with the hostname or IP address.

 

What happens is that when the receive location receives a new socket request and it has been configured for duplex communication, it registers a TCP listener and adds the listen address (created using a dynamically generated port) to the BizTalk Party that has been configured on the receive location.  When a send port is also set up to use the same party and it receives a message, it resolves the address to send to by looking it up against the BizTalk Party.  When the send adapter then transmits the data, effectively it is sending the data to the receive location (running in the instance of the receive adapter on a particular host) which accepts the data from the send port and sends it back down the socket connection to the sender that originally initiated the connection.