Class ServiceConfiguration

  • All Implemented Interfaces:
    Serializable

    public class ServiceConfiguration
    extends Object
    implements Serializable
    Managed service configuration. In addition to deploying managed services by calling any of the provided deploy(...) methods, managed services can also be automatically deployed on startup by specifying them in IgniteConfiguration like so:
     IgniteConfiguration gridCfg = new IgniteConfiguration();
    
     GridServiceConfiguration svcCfg1 = new GridServiceConfiguration();
    
     svcCfg1.setName("myClusterSingletonService");
     svcCfg1.setMaxPerNodeCount(1);
     svcCfg1.setTotalCount(1);
     svcCfg1.setService(new MyClusterSingletonService());
    
     GridServiceConfiguration svcCfg2 = new GridServiceConfiguration();
    
     svcCfg2.setName("myNodeSingletonService");
     svcCfg2.setMaxPerNodeCount(1);
     svcCfg2.setService(new MyNodeSingletonService());
    
     gridCfg.setServiceConfiguration(svcCfg1, svcCfg2);
     ...
     Ignition.start(gridCfg);
     
    The above configuration can also be specified in a Spring configuration file.
    See Also:
    Serialized Form
    • Field Detail

      • name

        protected String name
        Service name.
      • totalCnt

        protected int totalCnt
        Total count.
      • maxPerNodeCnt

        protected int maxPerNodeCnt
        Max per-node count.
      • cacheName

        protected String cacheName
        Cache name.
      • affKey

        protected Object affKey
        Affinity key.
      • isStatisticsEnabled

        protected boolean isStatisticsEnabled
        Enables or disables service statistics.
    • Constructor Detail

      • ServiceConfiguration

        public ServiceConfiguration()
    • Method Detail

      • getName

        public String getName()
        Gets service name.

        This parameter is mandatory when deploying a service.

        Returns:
        Service name.
      • setName

        public ServiceConfiguration setName​(String name)
        Sets service name.

        This parameter is mandatory when deploying a service.

        Parameters:
        name - Service name.
        Returns:
        this for chaining.
      • getService

        public Service getService()
        Gets service instance.

        This parameter is mandatory when deploying a service.

        Returns:
        Service instance.
      • setService

        public ServiceConfiguration setService​(Service svc)
        Sets service instance.

        This parameter is mandatory when deploying a service.

        Parameters:
        svc - Service instance.
        Returns:
        this for chaining.
      • getTotalCount

        public int getTotalCount()
        Gets total number of deployed service instances in the cluster, 0 for unlimited.

        At least one of getTotalCount() or getMaxPerNodeCount() values must be positive.

        Returns:
        Total number of deployed service instances in the cluster, 0 for unlimited.
      • setTotalCount

        public ServiceConfiguration setTotalCount​(int totalCnt)
        Sets total number of deployed service instances in the cluster, 0 for unlimited.

        At least one of getTotalCount() or getMaxPerNodeCount() values must be positive.

        Parameters:
        totalCnt - Total number of deployed service instances in the cluster, 0 for unlimited.
        Returns:
        this for chaining.
      • getMaxPerNodeCount

        public int getMaxPerNodeCount()
        Gets maximum number of deployed service instances on each node, 0 for unlimited.

        At least one of getMaxPerNodeCount() or getTotalCount() values must be positive.

        Returns:
        Maximum number of deployed service instances on each node, 0 for unlimited.
      • setMaxPerNodeCount

        public ServiceConfiguration setMaxPerNodeCount​(int maxPerNodeCnt)
        Sets maximum number of deployed service instances on each node, 0 for unlimited.

        At least one of getMaxPerNodeCount() or getTotalCount() values must be positive.

        Parameters:
        maxPerNodeCnt - Maximum number of deployed service instances on each node, 0 for unlimited.
        Returns:
        this for chaining.
      • getCacheName

        public String getCacheName()
        Gets cache name used for key-to-node affinity calculation.

        This parameter is optional and is set only when deploying service based on key-affinity.

        NOTE: If the cache is destroyed, the service will be undeployed automatically.

        Returns:
        Cache name, possibly null.
      • setCacheName

        public ServiceConfiguration setCacheName​(String cacheName)
        Sets cache name used for key-to-node affinity calculation.

        This parameter is optional and is set only when deploying service based on key-affinity.

        Parameters:
        cacheName - Cache name, possibly null.
        Returns:
        this for chaining.
      • getAffinityKey

        public Object getAffinityKey()
        Gets affinity key used for key-to-node affinity calculation.

        This parameter is optional and is set only when deploying service based on key-affinity.

        Returns:
        Affinity key, possibly null.
      • setAffinityKey

        public ServiceConfiguration setAffinityKey​(Object affKey)
        Sets affinity key used for key-to-node affinity calculation.

        This parameter is optional and is set only when deploying service based on key-affinity.

        Parameters:
        affKey - Affinity key, possibly null.
        Returns:
        this for chaining.
      • getNodeFilter

        public IgnitePredicate<ClusterNode> getNodeFilter()
        Gets node filter used to filter nodes on which the service will be deployed.

        This parameter is optional. If not provided service may be deployed on any or all nodes in the grid, based on configuration.

        Returns:
        Node filter used to filter nodes on which the service will be deployed, possibly null.
      • setNodeFilter

        public ServiceConfiguration setNodeFilter​(IgnitePredicate<ClusterNode> nodeFilter)
        Sets node filter used to filter nodes on which the service will be deployed.

        This parameter is optional. If not provided service may be deployed on any or all nodes in the grid, based on configuration.

        Parameters:
        nodeFilter - Node filter used to filter nodes on which the service will be deployed, possibly null.
        Returns:
        this for chaining.
      • setStatisticsEnabled

        public ServiceConfiguration setStatisticsEnabled​(boolean enabled)
        Enables or disables statistics for the service. If enabled, durations of the service's methods invocations are measured (in milliseconds) and stored in histograms of metric registry IgniteServiceProcessor.SERVICE_METRIC_REGISTRY by service name.

        NOTE: Statistics are collected only with service proxies obtaining by methods like IgniteServices.serviceProxy(String, Class, boolean) and won't work for direct reference of local services which you can get by, for example, IgniteServices.service(String).

        NOTE: Statistics are collected only for all service's interfaces except Service and Externalizable if implemented. Statistics are not collected for methods not declared in any interface.

        Parameters:
        enabled - If true, enables service statistics. Disables otherwise.
        Returns:
        this for chaining.
      • isStatisticsEnabled

        public boolean isStatisticsEnabled()
        Tells wheter statistics for this service is enabled.
        Returns:
        True, if statistics for this service will be enabled. False otherwise.
      • getInterceptors

        public ServiceCallInterceptor[] getInterceptors()
        Gets service call interceptors.
        Returns:
        Service call interceptors.
      • setInterceptors

        public ServiceConfiguration setInterceptors​(ServiceCallInterceptor... interceptors)
        Sets service call interceptors.
        Parameters:
        interceptors - Service call interceptors.
        Returns:
        this for chaining.
      • equalsIgnoreNodeFilter

        public boolean equalsIgnoreNodeFilter​(Object o)
        Checks if configurations are equal ignoring the node filter. Node filters control on which nodes the services are deployed and often can be ignored for equality checks.
        Parameters:
        o - Other configuration.
        Returns:
        True if configurations are equal, false otherwise.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object