question

Upvotes
Accepted
12 1 2 3

RFA server resilience

Dear Sir,

We are using the RFA to collect FX rate data, and we are given 2 IP addresses (primary server and secondary server).

When we input the primary server IP to the position, it is fine to connect and get the data with below code.

---------------------------------------------------------------------------------------------------------------------------

private static readonly RFA_String Position = new RFA_String(config.AppSettings.Settings["Position"].Value);

...

element.Name = ThomsonReuters.RFA.RDM.Login.ENAME_POSITION;

elementData.SetFromString(Position, DataBuffer.DataBufferEnum.StringAscii);

element.Data = elementData;

elwiter.Bind(element);

---------------------------------------------------------------------------------------------------------------------------

The question is, can we also put the secondary server IP together in the RFA call, so that the two servers can do failover for resilience effect?


Thanks for help.

elektronrefinitiv-realtimetreprfa
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@DavidTWLo

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?

If yes, please click the 'Accept' text next to the reply. This will guide all community members who have a similar question. Otherwise please post again offering further insight into your question.

Thanks,

AHS

@DavidTWLo

Thank you for your participation in the forum.

Is the reply below satisfactory in resolving your query? If yes please click the 'Accept' text next to the appropriate reply.

This will guide all community members who have a similar question. Otherwise please post again offering further insight into your question.

Thanks,

AHS

Upvotes
Accepted
32.2k 40 11 20

Hello @DavidTWLo,

RFA incorporates the concept of server resilience, or warm standby, via server list.

Please see "Warm Standby" section in RFA Developer Guide for your language option, search for "serverList".

In RFA, server list is absorbed via session during initialization, so when we configure, via session, serverList should include two or more servers, that will be part of resilience implementation, and if the first on the list fails, the reconnect to the second server will be seamless and fully handled by RFA.

For better understanding of serverList usage in Java you may wish to review Understanding RFA Java Configuration Tutorial ,

RFA Configuration Tutorial for C/C++ ,

RFA Configuration Tutorial for .Net.

... it appears, that the primary server IP, that the code listed is populating into IP, is consequently copied into serverList.

Does this info help?


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
12 1 2 3

Hello,

It is great to hear about this feature which should be helpful for us.


And want to further ask that, in the "serverList" of cfg file, I understand now to specify resilience servers like below:

\Connections\RSSL\serverList = "Server_A:14007,Server_B:14008"


But in the login request, like my previous code shown, currently I specify the position with the value of Server A only below:

elementData.SetFromString(Position, DataBuffer.DataBufferEnum.StringAscii);


Does it mean I also need to input both server names in the position?

Thanks.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
25.3k 87 12 25

Hi @DavidTWLo

In the login request, you need to specify the IP address / hostname of the device where your RFA application is running - not the details of the server(s) you are connecting to.

Please change the Login Position to reflect the details of your actual localhost where the RFA application is running.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
32.2k 40 11 20

Hello @DavidTWLo,

serverList per config does not include port (please refer to RFA Configuration Guide for your language option for more information). Port is exposed separately, via rsslPort parameter, and is shared between the servers on the server list, is the same.

What you suggest seems to imply that Server_A exposes RSSL protocol connectivity on port 14007 while Server_B on port 14008?

Please check with your market data group that this is indeed the case. In my estimation, 95% of the time RSSL is exposed on the default RSSL port 14002. In the remaining 5%of the cases, if a different port is chosen by market data organization, it's consistent across the server groups.

Let us know if I understood this correctly, and you find the need to support warm standby on different ports, and we can further discuss the available options.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
12 1 2 3

Hello @Umer Nalla,

Thanks for advice.

I try to put the IP of the PC running the application into position field, but seems the login will not be successful. I observe below message is shown:

(ComponentName) Static: (Severity) Error: OMMConsumer::registerClient() has been called with an item request prior to login request. Login request is expected first.



Hello @zoya.farberov,

Thanks for reply.

Actually we are using same port, so I put it like this now.

\Connections\Connection_RSSL\rsslPort = "14002"

\Connections\Connection_RSSL\serverList = "Server_A,Server_B"

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@DavidTWLo

What is the format of the position you are using when creating your Login Request message?

e.g. do you set it to something like "192.168.2.1/net" where 192.168.2.1 is your local IP address?

Also, ensure your ENAME_APP_ID is not blank. You can ask your Market Data team for your App ID - if not you can use a default value of 256.

If you are doing the above and the login still fails, then please follow my colleague @moragodkrit advise below and provide us with the status message / RSSL trace output here so we can assist.

Upvotes
7.6k 15 6 9

@DavidTWLo

I would suggest you check the Login status for the first steps. It could be the case that the login fails. You may print the status text from the response status to see the details. It could be an issue from DACS simultaneous login when you pass the same position to the server.

You may also turn on RSSL trace to see incoming and outgoing messages between API and the server. Please find instruction to turn on RSSL trace in RFA.NET and C++ from the following link.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.