question

Upvotes
Accepted
23 5 11 13

What kind of Status will send back by RFA ? If service get down ?

Hi Sir

If APP connect to Elektron via ServiceName= Elektron_DD, for some reason the service is down ( phisical connection is still OK) , what kind of status message will be sent from RFA to APP ? for instance , something like: disconnectServiceDown.

treprfarfa-apiService
icon clock
10 |1500

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

1 Answer

Upvotes
Accepted
1.9k 6 9 16

Hi @jessie.lin,

Referring to RFAJ_RDMUsageGuide.pdf (in <RFA Java Package>/Docs> folder), it uses ‘UPDATE’ message type to convey any changes information (e.g. service status in this case).

To demonstrate the example from the scenario that you mentioned in the question, we’ve performed the test as depicted in Figure 1.

Regarding the image above Connection A (between the feed and ADS/POP) is unstable, but it doesn’t affect to Connection B. However, a service status will change depending on Connection A.

In that case, ADS/POP will send directory ‘UPDATE’ message type to inform changes occurred to the consumer application (see Figure 2, and the message log attached).

test-directory-log.txt

Note: To check the change of service, the application needs to check Filter: STATE, Element: ServiceState (0: Service is Down, 1: Service is UP).

If you want to test DIRECTORY message type behavior, I recommend you try RFA Java’s example named DictionaryDemo program. You can modify just a few files a little bit as shown below:

  • In DirectoryDemo.java
//  Import ConfigDb to make the program to use hardcode configuration settings
import com.reuters.rfa.config.ConfigDb;


// At the init() method, make the application uses hardcode settings
public void init()
    {
    	//  Create a programmatic configuration object.
    	ConfigDb configDb = new ConfigDb();
    	configDb.addVariable("myNamespace.Sessions.mySession.connectionList", "myConnection");
    	
    	configDb.addVariable("myNamespace.Connections.myConnection.connectionType", "RSSL");
    	configDb.addVariable("myNamespace.Connections.myConnection.serverList", "172.20.33.43");
    	configDb.addVariable("myNamespace.Connections.myConnection.portNumber", "14002");
    	configDb.addVariable("myNamespace.Connections.myConnection.logFileName", "console");
    	configDb.addVariable("myNamespace.Connections.myConnection.ipcTraceFlags", "31");


    	//  Make the application use the object created previously.
    	Context.initialize(getConfigDb());
    	System.out.println(getConfigDb());
    	...
  • In DirectoryClient.java
// At encodeSrcDirReqMsg(), make the example remove NONSTREAMING flag.
    private OMMMsg encodeSrcDirReqMsg()
    {
        ...
        msg.setIndicationFlags(OMMMsg.Indication.REFRESH
                               /*| OMMMsg.Indication.NONSTREAMING*/);
        ...


// At processEvent(Event event), comment two statements, and add a logic to support UPDATE_RESP message type.
if (respMsg.isSet(OMMMsg.Indication.REFRESH_COMPLETE))
                {
                    // Receive all dictionary names from all source directory
                    // Notify application to download dictionary
// Comment these line.
//                    _mainApp.processDirectoryInfo();
//                    _dirHandle = null; // Because the request is NON-Streaming
                }
            }
        }
// Add this condition
        else if (respMsg.getMsgType() == OMMMsg.MsgType.UPDATE_RESP)
        {
            System.out.println("Received update message type, there should be some changes regarding service directory ");
        }

Hope this helps.


icon clock
10 |1500

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

Click below to post an Idea Post Idea