ServiceReferencePersistenceWorker.java 3.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/*
 * Copyright 2017, OpenSkywalking Organization All rights reserved.
 *
 * 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.
 *
 * Project repository: https://github.com/OpenSkywalking/skywalking
 */

19
package org.skywalking.apm.collector.agentstream.worker.serviceref;
20

21
import org.skywalking.apm.collector.agentstream.worker.serviceref.dao.IServiceReferenceDAO;
22
import org.skywalking.apm.collector.storage.dao.DAOContainer;
23 24
import org.skywalking.apm.collector.storage.define.DataDefine;
import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceDataDefine;
25 26 27 28 29 30 31 32 33 34 35 36
import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
import org.skywalking.apm.collector.stream.worker.Role;
import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;

/**
 * @author pengys5
 */
37
public class ServiceReferencePersistenceWorker extends PersistenceWorker {
38

39
    public ServiceReferencePersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
40 41 42 43 44 45 46 47 48 49 50 51
        super(role, clusterContext);
    }

    @Override public void preStart() throws ProviderNotFoundException {
        super.preStart();
    }

    @Override protected boolean needMergeDBData() {
        return true;
    }

    @Override protected IPersistenceDAO persistenceDAO() {
52
        return (IPersistenceDAO)DAOContainer.INSTANCE.get(IServiceReferenceDAO.class.getName());
53 54
    }

55
    public static class Factory extends AbstractLocalAsyncWorkerProvider<ServiceReferencePersistenceWorker> {
56 57 58 59 60 61
        @Override
        public Role role() {
            return WorkerRole.INSTANCE;
        }

        @Override
62 63
        public ServiceReferencePersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
            return new ServiceReferencePersistenceWorker(role(), clusterContext);
64 65 66 67 68 69 70 71 72 73 74 75 76
        }

        @Override
        public int queueSize() {
            return 1024;
        }
    }

    public enum WorkerRole implements Role {
        INSTANCE;

        @Override
        public String roleName() {
77
            return ServiceReferencePersistenceWorker.class.getSimpleName();
78 79 80 81 82 83 84 85
        }

        @Override
        public WorkerSelector workerSelector() {
            return new HashCodeSelector();
        }

        @Override public DataDefine dataDefine() {
86
            return new ServiceReferenceDataDefine();
87 88 89
        }
    }
}