We have an RSSL provider built against RFA 8.1 using the C++ API.
When the process detects that it is becoming a slow consumer it should stop accepting new requests but to infer that all existing requests are still ok. This is currently communicated to the ADH by sending a directory message with:
- load factor set to 65535;
- service state as 1 (Up); and
- accepting state as 0 (Not Accepting)
But, when this is sent to an ADH with discourageRequestsOnOutage enabled all requests are marked stale. This was using ADH 3.2.3.
Is this understanding of the accepting state incorrect? Should the process leave the accepting state as 1 (accepting) and simply "prevent" new requests by the use of the load factor alone?
Based on the information you have provided, it would appear that the ADH behaviour is not as expected.
Please include relevant trace files from the Provider, Consumer and relevant ADS/ADH logs to help with the investigation.
When you say all requests are marked stale, do you mean new request or do you actually mean existing open items are receiving Stale status messages?
If you set AcceptingRequests to false, it indicates to the ADH that your provider will not accept any new requests.
Also, may I ask if you are developing a new Provider application with RFA or updating an existing application? If a new development, our recommendation is that any new development work is done using our newer strategic Refintiv Realtime SDK - rather than the legacy RFA APIs. The EMA part of the RealtimeSDK is much easier to learn, implement and maintain (than RFA) and will be supported for a much longer time period in the future.
The link above is for the Java version and it is also available C++