One instance of OnixS::CME::MDH::Handler processes market data for a single channel only. Users must create multiple instances of the Handler to process data from multiple channels.
Yes, exactly.
Filtering (instrument selection) is useful when market data required for specific instruments only. Instrument selection is like an inclusive whitelist. E.g., if security A is selected, security-related events (members of OnixS::CME::MDH::SecurityListener) are raised for security A only.
If two or more securities are selected, events are triggered only for those securities.
It is a bit more complicated with book consistency & up-to-date. Please, note that CME does not guarantee 100% book up-to-date on intermediate updates. It is guaranteed only after 'End of XXX quote' market event where XXX is real or implied. So you have to check this field to ensure the book is 100% up-to-date.
It can be achieved by using book update callbacks of OnixS::CME::MDH::SecurityListener rather than atomic book update listening. They are publishing the books only on 'End of XXX quotes' market event giving guarantee books are consistent and up-to-date.
Any OnixS::CME::MDH::SecurityListener::onBookUpdate call gives you consistent order book state (except for Natural Refresh mode). If you need book state at startup, you can just get a snapshot at first call.
See Connectivity Troubleshooting.
When the Handler performs book recovery, it caches all the data received on incremental feeds. When the market is busy, a number of cached messages may exceed configured limit defined by the OnixS::CME::MDH::HandlerSettings::recoveryQueueMaxSize parameter value. So, to avoid QueueOverflow warnings, it is necessary to increase the value of the noted parameter.
The cause is a violation of received packets sequence (gap) that wasn't restored after the OnixS::CME::MDH::RealtimeFeedSettings::outOfOrderPacketMaxInterval number of packets or after the OnixS::CME::MDH::HandlerSettings::lostPacketWaitTime elapsed. Violation of packet sequence can be caused by packets loss on different levels: CME environment issues, network connectivity issues, system or application issues.
Also, when Handler performs a large-scale recovery due to the gap or while joining market lately, incremental packets are cached. In case of intensive data transmission, queue keeping incremental packets may reach its limit causing a noted warning.
Please refer to our Lost multicast packets troubleshooting guide for more details.
Book Atomic Update (OnixS::CME::MDH::SecurityListener::onBookAtomicUpdate) is an elementary action over a book, and usually, there're multiple atomic updates inside a single snapshot or incremental refresh. Also, the book may not be valid between two atomic updates. Only when all atomic updates are processed from the single market event, the book is considered as valid.
Book Update (OnixS::CME::MDH::SecurityListener::onBookUpdate) are raised exactly at a time when all atomic updates are processed, and the book appears to be valid and up-to-date.
Security definition sent by Market Data Platform contains fields
representing the multipliers to convert the CME Globex display price to the conventional price.
Minimal book update latency falls into 100-250 nanoseconds depending on hardware/operating system/network conditions. Please, contact Onix Sales for most recent official benchmark results.
It depends significantly on many different parameters including network, hardware, operating system environment, market data rate and applied handler settings.
The smaller, the better. It shall be microseconds to do not impact handler ability to process data on high tickers.
The Handler reports all errors and warnings through OnixS::CME::MDH::HandlerListener::onError and OnixS::CME::MDH::HandlerListener::onWarning callbacks respectively.
The Handler allows tracing packets as they are received by active feeds including out-of-order or duplicated packets (in contrast to market data listening which exposes packets passed through session rules). With the help of the new OnixS::CME::MDH::FeedListener listener, it is possible to write advanced diagnostic services.