package tech.powerjob.server.remote.worker.filter; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import tech.powerjob.server.common.SJ; import tech.powerjob.server.common.module.WorkerInfo; import tech.powerjob.server.persistence.remote.model.JobInfoDO; import java.util.Set; /** * just use designated worker * * @author tjq * @since 2021/2/19 */ @Slf4j @Component public class DesignatedWorkerFilter implements WorkerFilter { @Override public boolean filter(WorkerInfo workerInfo, JobInfoDO jobInfo) { String designatedWorkers = jobInfo.getDesignatedWorkers(); // no worker is specified, no filter of any if (StringUtils.isEmpty(designatedWorkers)) { return false; } Set designatedWorkersSet = Sets.newHashSet(SJ.COMMA_SPLITTER.splitToList(designatedWorkers)); for (String tagOrAddress : designatedWorkersSet) { if (tagOrAddress.equals(workerInfo.getTag()) || tagOrAddress.equals(workerInfo.getAddress())) { return false; } } return true; } }