Device Query Support for Large Clusters
RisPort's selectCMDevice operation allows clients to perform Cisco Unified Communications Manager device-related queries. Your application can specify the number of devices to monitor and the frequency at which to make these requests. However, both have some limitations to be aware of.
The first issue most commonly run into is the number of results the selectCmDevice operation returns. Recently RisPort has been updated so that the selectCmDevice operation can return 1000 results for CUCM 9.0 and above, up from 200 results in previous versions.
If RisPort is monitoring more than 1000 devices, only 1000 results will be returned (assuming you are using CUCM 9.0 or above). RisPort provides no indication that not all devices have been returned in the response. Therefore, if your application receives exactly the maximum number of results, it is safe to assume that the response is truncated and not all devices were returned in the response.
Also, it is possible for individual devices to appear with multiple records in the response, each representing the last registration to a node in the cluster. For example, if a device was registered to node 1 for a period of time, but it is now registered with node 2, then 2 records could be found for that device in the response. Therefore, if your application submits a static list of 1000 device names for selectCmDevice and if any of these devices have multiple records, then the results could be truncated without indication. The best practice is to specify a number less than the maximum number of records to allow for overhead for these duplicates. However, if the result count equals the maximum number of records, your application should assume an overflow and retry with fewer devices in the request. For example if you set the MaxReturnedDevices = 600 and the response has 1000 records it is best to assume that not all devices are in the response and you will likely see multiples of the same devices. Therefore, it would be wise to keep lowering the MaxReturnedDevices to a lower number so that the response has less than 1000 records.
Commonly apps like to use Risport to do a bulk 'sync' update of IP addresses for all devices (or at least XSI capable devices), so there is conflict between request rate (throttle), the number of devices you can make per request, vs. overflowing the response, vs. performance impact of making too many small requests, vs. possible duplicates, vs. desire to be as up-to-date as possible. Through trial and error you can find the right balance of number of devices per request and the frequency to which you make those requests.
Visit the SXML Developer Forums to ask questions and interact with other developers.