Implementers of interface FixedPartitionResolver
helps to achieve explicit mapping of a "user defined" partition to a data member node.
Geode uses the partition name returned by FixedPartitionResolver#getPartitionName(EntryEvent,
std::shared_ptr<CacheableHashSet>)
to determine on which member the data is being managed. Say, for example, you want to partition all Trades according to quarters. You can implement FixedPartitionResolver to get the name of the quarter based on the date given as part of EntryEvent
.
public class QuarterPartitionResolver implements FixedPartitionResolver{
    public const char* getPartitionName(EntryEvent event,
std::shared_ptr<CacheableHashSet>
allAvailablePartitions) {
    Date date = sdf.parse((String)opDetails.getKey());
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int month = cal.get(Calendar.MONTH);
    if (month == 0 || month == 1 || month == 2) {
      return "Quarter1";
    }
    else if (month == 3 || month == 4 || month == 5) {
      return "Quarter2";
    }
    else if (month == 6 || month == 7 || month == 8) {
      return "Quarter3";
    }
    else if (month == 9 || month == 10 || month == 11) {
      return "Quarter4";
    }
    else {
      return "Invalid Quarter";
    }
  }
- See also
- PartitionResolver