On our project, we use the server RFC to receive IDOCs from SAP.
We wanted to set up the server RFC for high availability, but the configuration allows redundant MQ files in one server RFC, but not several server RFCs.
If ever the link between SAP and the RFC server is cut (network problem, RFC server KO) the idocs are no longer transferred between SAP and the RFC server.
We have installed two RFC servers. They listen to SAP and retrieve the Idocs (the Idoc is present on only one of the server RFCs, first come first served). If one of the two is KO, the other retrieves all the Idocs while waiting for the second RFC server to become available again
But on the Talend job side, the tSAPReceiver component, although it can accept several server RFCs, stops as soon as a server RFC is contacted. It does not move on to the next server RFC. So if I have two functional RFCs, with the Idocs spread across both, the tSAPReceiver component only reads the IDocs from the first one, and therefore misses some of the Idocs. We therefore created a java loop to loop through a list of server RFCs. For each iteration, there is a test to see if the server RFC responds (optimised so as not to wait for a potential time out) and retrieval of the Idocs from the server RFC for the current iteration.
To sum up, to have an RFC server in high availability mode: - Install X server RFCs all listening to SAP. - On the job side, create a loop to read the idocs of all the server RFCs.