processEvent() being called infinitely

Best Answer
-
Hello @rudygunawan
Please be informed that when the infrastructure sends a status indicating that the watched item is stale, RFA assumes that the server will recover the item. The item remains stale until the infrastructure automatically recovers the item. The application does not need to re-subscribe that item, the API will do for the application.
If you want to unsubscribe item, you can call the following function to unregister an uninterested item handle object.
MarketDataSubscriber.unregisterClient(Handle itemHandle)
Please be informed that the application can configure the item subscription request timeout via your SSL Connection Node "marketDataItemSubTimeout" attribute
- Attribute: marketDataItemSubTimeout
- Type: Integer
- Default: 15000
- Description: Timeout value (in milliseconds) to wait for receiving the market data item subscription.
However, this timeout means the API does not receive "any messages" from the infrastructure. The Stale status does not count as "request timeout" because the infrastructure sends "Status Message" to inform the API that the item is staled.
0
Answers
-
- Do you mean you still get Item events when the RIC has no update?
- Not sure are you RFA C++ or Java?
In general, if you share the same client when the app calls the registerClient method, you could receive other event-type in the processEvent callbacks. For example, when it has a service change, the connection change from the server. RFA can generate another Logger message, and the app will get the events in processEvent callback.
The app should check the event type and then process the event type accordingly. For example, if it receives OMMItemEventEnum, it should be related to data updates for the RIC request. You can find sample codes to process events from our examples, such as StartConsumer(RFA C++), under the examples folder.
0 -
- Do you mean you still get Item events when the RIC has no update? Correct, you can see from below screenshot, it's printing the same RIC and got no update
- Not sure are you RFA C++ or Java? Java
0 -
Are you using the Market Data interface (SSL connection) or the OMM (RSSL connection)?
Not sure that this is the case that the application does not print any data because it can't find some specific fields in the update message. Or there is the case that the update payload is blank/empty.
I would suggest you enable IPCTrace (set ipcTraceFlags) in the RFA Java config to verify the raw data the application received from the server.
You can also test the same RIC with RFA Java examples such as MDSub(MD Interface) or QuickStartConsumer(OMM Interface) provided in the RFA Java package. It should help confirm that you receive the same output or not.
0 -
I'm using SSL connection.
This specific RIC is comprised of multiple RICs. So some of the fields may not be available.
In this case anyway to stop keep listening?
0 -
I think it would depend on your app logic when it can't parse the fields or find it on the dict. API may throw some exceptions, and if your app catches it, it may skip and does not print the fields and their value. I can't confirm. Anyway, testing with an example app to compare the result may help you verify the issue.
0 -
Hello @rudygunawan
Please be informed that you can configure the following RFA Java configurations to enable the log file
- <namespace>/Connections/<Connection Name>/ipcTraceFlags = 7
- <namespace>/ Connections/<Connection Name>/mountTrace = True
- <namespace>/ Connections/<Connection Name>/logFileName=<path to log file>
0 -
I'm still not clear with answer. I see an event every two minutes.
Is there any ways to stop this (may be a timeout)? I don't want to keep listening to an event which doesn't sent any data.
0 -
The update message was sent from the Provider ap or data feed, so RFA delivers the message to the application layer as is in the form of events callback and no configuration to skip it.
We suggest you turn on the RFA Java IPCTrace log because we can check the raw messages API receives to confirm if those update messages(shown in your screenshot) are the message that comes with no data (no fields list /blank). Or this issue relates to your app logics when the update message contains data, but some fields are not available in the data dictionary, and it causes an exception error in the app layer. It also causes the app not prints any fields.
0 -
Sorry which file is this?
0 -
Hello @rudygunawan
The RFA Java configurations can be configured in various ways. I strongly suggest you check with your application development team to verify how your application configures RFA Java parameters.
XML Configuration file.
You can use the config_exporter.jar tool to export your RFA Java configurations to the XML file.
$>java -jar config_exporter.jar [-system | -user] -file <pathNameOfFile>
Then you can change the following parameters of your SSL Connection node to enable the log file:
<node name="Connections">
<map />
<node name="pageSSLConn">
<map>
<entry key="connectionType" value="SSL" />
<entry key="portNumber" value="8101" />
<entry key="dacs_CbeEnabled" value="true" />
<entry key="dacs_GenerateLocks" value="true" />
<entry key="dacs_SbePubEnabled" value="true" />
<entry key="dacs_SbeSubEnabled" value="true" />
<entry key="downloadDataDict" value="true" />
<entry key="serverList" value="localhost" />
<entry key="ipcTraceFlags" value="7" />
<entry key="logFileName" value="<path to log file>" />
<entry key="mountTrace" value="true" />
<entry key="enumTypeFile" value="/var/triarch/enumtype.def" />
<entry key="masterFidFile" value="/var/triarch/appendix_a" />
</map>
</node>
</node>After modifying the above configurations, you can use the config_loader.jar tool to populate the configuration back to the RFA Java API and then restart the application to make the changes take effect.
$>java –jar config_loader.jar -file <pathNameOfFile>
Please note that the RFA Java tools are available at <RFA Java package>\Tools folder.
GUI Tool.
You may use the GUI Tool (config_editor.bat, config_editor.jar, or config_editor.ksh) to change the above configurations.
Then restart the application to make the changes take effect.
Please note that the RFA Java tools are available at <RFA Java package>\Tools folder.
ConfigDB
The RFA Java Configurations also can be configured with the API's ConfigDB object in the application source code.
import com.reuters.rfa.config.ConfigDb;
ConfigDb configDb = new ConfigDb();
...
configDb.addVariable("<SSLNamespace>.Connections.sslConConnection.mountTrace","true");
configDb.addVariable("<SSLNamespace>.Connections.sslConConnection.ipcTraceFlags","7");
configDb.addVariable("<SSLNamespace>.Connections.sslConConnection.logFileName","<path to log file>")Then re-built your application and restart the application to make the changes take effect.
0 -
@wasin.w @moragodkrit.chumsri_1 thank you for the answers.
I have enabled the ipx tracing and got the logs.
Is there a way to set the timeout when calling registerClient or from session level?
0 -
Hello @rudygunawan
The trace file shows that the API received the stale message (status State "STALE" and status Text "Allow suspect data is disabled") from the backend. The stale message means the data is not available now. It is not the item request timeout issue.
I strongly suggest you contact your Market Data team to help you verify why the infrastructure returns the stale message to the API.
0 -
thanks for the reply, I'll check with Market Data team.
Could you also answer the other question:
Is there a way to set the timeout when calling registerClient or from session level (when status state is 'STALE', don't want to keep on listening )?
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 687 Datastream
- 1.4K DSS
- 623 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 557 WebSocket API
- 38 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 276 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 688 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 105 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 91 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛