class ZookeeperProcessor extends DiscoveryConfigProcessor {
    @Autowired
    private ZookeeperOperation zookeeperOperation;

    private ZookeeperListener zookeeperListener;

    @PostConstruct
    public void initialize() {
        beforeInitialization();

        String group = getGroup();
        String dataId = getDataId();

        logSubscribeStarted();

        try {
            zookeeperListener = zookeeperOperation.subscribeConfig(group, dataId, new ZookeeperSubscribeCallback() {
                @Override
                public void callback(String config) {<FILL_FUNCTION_BODY>}
            });
        } catch (Exception e) {
            logSubscribeFailed(e);
        }

        logGetStarted();

        try {
            String config = zookeeperOperation.getConfig(group, dataId);
            if (config != null) {
                callbackConfig(config);
            } else {
                logNotFound();
            }
        } catch (Exception e) {
            logGetFailed(e);
        }

        afterInitialization();
    }

    @Override
    public void destroy() {
        if (zookeeperListener == null) {
            return;
        }

        String group = getGroup();
        String dataId = getDataId();

        logUnsubscribeStarted();

        try {
            zookeeperOperation.unsubscribeConfig(group, dataId, zookeeperListener);
        } catch (Exception e) {
            logUnsubscribeFailed(e);
        }
    }

    @Override
    public ConfigType getConfigType() {
        return ConfigType.ZOOKEEPER;
    }
}

                    try {
                        callbackConfig(config);
                    } catch (Exception e) {
                        logCallbackFailed(e);
                    }
                
<methods>public non-sealed void <init>() ,public void afterInitialization() ,public void beforeInitialization() ,public abstract void callbackConfig(java.lang.String) ,public abstract com.nepxion.discovery.common.entity.ConfigType getConfigType() ,public abstract java.lang.String getDataId() ,public abstract java.lang.String getDescription() ,public abstract java.lang.String getGroup() ,public boolean isConfigSingleKey() ,public void logCallbackFailed(java.lang.Exception) ,public void logGetFailed(java.lang.Exception) ,public void logGetStarted() ,public void logNotFound() ,public void logSubscribeFailed(java.lang.Exception) ,public void logSubscribeStarted() ,public void logUnsubscribeFailed(java.lang.Exception) ,public void logUnsubscribeStarted() <variables>