Custom Discriminator and Affinity Conditions
In addition to Conditions based on Engine Properties, you can implement your own custom Conditions. For example, you might have a number of Services that require a connection to a database and might have more Engines working on those Services than available connections. You could write a Server Hook that keeps track of how many tasks are currently running, and write a Custom Discriminator to prevent all Engines from taking a Task if all connections are in use by other Tasks.
To write a Custom Condition:
|
1.
|
Implement the CustomDiscriminator or CustomAffinity interface in SchedulingConditionFactory. |
|
2.
|
Package your classes into a JAR file, and for each Broker on which this is used, place that file in DS_MANAGER/webapps/livecluster/WEB-INF/lib. |
|
3.
|
At Service creation time, create it using the SchedulingConditionFactory.createCustom[Affinity/Discriminator] call. Note that it is not necessary to have the JAR in a Java Driver classpath; likewise, this is also available for C++ and .NET Services, since the class is only used on Brokers. |