Java tutorial
/* * Druid - a distributed column store. * Copyright 2012 - 2015 Metamarkets Group Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.druid.server.router; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Optional; import com.google.common.collect.Iterables; import io.druid.query.Query; /** */ public class PriorityTieredBrokerSelectorStrategy implements TieredBrokerSelectorStrategy { private final int minPriority; private final int maxPriority; @JsonCreator public PriorityTieredBrokerSelectorStrategy(@JsonProperty("minPriority") Integer minPriority, @JsonProperty("maxPriority") Integer maxPriority) { this.minPriority = minPriority == null ? 0 : minPriority; this.maxPriority = maxPriority == null ? 1 : maxPriority; } @Override public Optional<String> getBrokerServiceName(TieredBrokerConfig tierConfig, Query query) { final int priority = query.getContextPriority(0); if (priority < minPriority) { return Optional.of(Iterables.getLast(tierConfig.getTierToBrokerMap().values(), tierConfig.getDefaultBrokerServiceName())); } else if (priority >= maxPriority) { return Optional.of(Iterables.getFirst(tierConfig.getTierToBrokerMap().values(), tierConfig.getDefaultBrokerServiceName())); } return Optional.absent(); } }