I am using the below codes for event dispatch, where EVENT_TIMEOUT_PERIOD = 0
I found that only 350-400 events can be dispatched every second, is there any configuration I can set to increase the throttle rate?
(if there are messages in the queue, 350-400 events will be dispatched every second,
if there is no message in the queue, it will loop about 100000 times every second)
long dispatchReturn = simpleConsumer.getEventQueue()->dispatch(EVENT_TIMEOUT_PERIOD);
I tried to apply the following configuration but it doesnt work
\Connections\Connection_RSSL\watchListTableSize = 100001 \Connections\Connection_RSSL\guaranteedOutputBuffers = 1000
\Connections\Connection_RSSL\numInputBuffers = 1000
\Connections\Connection_RSSL\throttleEnabled = true
\Connections\Connection_RSSL\throttleType = "count"
\Connections\Connection_RSSL\throttleBatchCount = 500
\Connections\Connection_RSSL\throttleMaxCount = 1000
\Sessions\Session1\connectionList = "Connection_RSSL"
\Sessions\Session1\threadModel = "Dual"
When you call dispatch() and there is an event available, RFA will invokes the client callback method. The client callback method executes in the same thread that call dispatch().
It is your callback method that slow down your dispatch rate.
This usually means you put a process heavy code or blocking code in the client callback.
There is no configuration that would help. You have to avoid blocking code yourself.
You can decode the message in the client callback but once you got the data you want you should pass it to another thread that will do the blocking code and let the dispatching thread dispatch next event.