Hi Prasad,

Affinity function does not directly map keys to nodes, it maps keys to
partitions. So it takes care about entities balance between nodes. To read
more please take a look here:

https://apacheignite.readme.io/docs/affinity-collocation#affinity-function

In case if for every subscriber you are going to create it's own cache then
you can try to setup the node filters for every subscriber:

https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/configuration/CacheConfiguration.html#setNodeFilter-org.apache.ignite.lang.IgnitePredicate-

If you have the same cache for all subscribers then try to setup your own
AffinityKey (as descibed above):

            IgniteCache<EntityKey, String> cache =
ignite.getOrCreateCache(cfg);

            for (int i = 0 ; i < 1_000_000; i++) {
                cache.put(new EntityKey(2*i, 1L), "Value1" + i); //sub id =
1
                cache.put(new EntityKey(2*i + 1, 2L), "Value2" + i); //sub
id =2
            }

where:

    public static class EntityKey {
        public EntityKey(long id, long subscriberId) {
            this.id = id;
            this.subscriberId = subscriberId;
        }

        private long id;

        // Subscriber ID which will be used for affinity.
        @AffinityKeyMapped
        private long subscriberId;

        public long getSubscriberId() {
            return subscriberId;
        }

        public long getId() {
            return id;
        }
    }

Thank you,
Andrei



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to