We are using RFA C++ 8.2.4.E1. To increase the throughput of our application we are looking for ways to improve its performance.
At present we run the single-threaded client model (Section-17.4.2) with one event queue. Because only one thread processes the incoming event data, the maximum rate we can achieve is about 6,500 updates/second.
To raise this figure we have explored the options described in the RFA documentation and found the EventQueueGroup concept (Section-10.1.2), which allows several event queues to be created and added to a single group.
The documentation, however, does not explain how an application should consume the events that are placed in those queues.Could you please confirm the following points?
- After an EventQueueGroup is created, does RFA automatically distribute incoming events among the queues, or must the application perform the distribution itself?
- What code changes are required to support multiple queues? Do we need a separate consumer thread for each queue?
- How does queue->dispatch() and processEvent() work in this scenario? Must we invoke the dispatch call on every queue we created, or does RFA handle it for us?
- Could you advise how much performance improvement we might expect if we implement this approach?