Reading Time: 2 minutes

Right now TCP inbound endpoints are implemented as TCP servers that listen for data coming from different clients. In ESB 2.2.6 we are adding a new feature to inverse the control: TCP inbounds can now poll data from remote servers.

It is really easy to switch to this strategy. Let's take a look of how a mule configuration looks like:




    

    
        
    

    
        
            
                
            
            
                
                    
                
            
        
    

latest report
Learn why we are the Leaders in management and

Notice the new tcp:polling-connector element in the mule configuration file. This element tells mule to poll data with a frequency of 1000ms and a timeout of 3000ms.
Using the above configuration we can create a TCP server that writes messages like this:

String stringMessage = "the message";
ServerSocket serverSocket = new ServerSocket(4444);
Socket clientSocket = serverSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
out.print(stringMessage);
out.close();
clientSocket.close();

You can check the value received in the out outbound using the MuleClient like this:

MuleClient client = new MuleClient();
MuleMessage message = client.request("vm://out?connector=queue", 10000);
String receivedMessage = message.getPayloadAsString();

The receivedMessage variable will hold the received value from the TCP Server.

If you want to try it, please download 2.2.6 or the latest 3.0 milestone