mirror of
https://github.com/dromara/dynamic-tp.git
synced 2024-10-23 08:34:05 +08:00
add OnceApplicationContextEventListener guarantees ApplicationEvent just one-time execution
This commit is contained in:
parent
c27b807530
commit
357b8202ea
@ -17,18 +17,6 @@
|
||||
|
||||
package org.dromara.dynamictp.adapter.common;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.entity.NotifyPlatform;
|
||||
import org.dromara.dynamictp.common.entity.ThreadPoolStats;
|
||||
import org.dromara.dynamictp.common.entity.TpExecutorProps;
|
||||
import org.dromara.dynamictp.common.entity.TpMainFields;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.util.StreamUtil;
|
||||
import org.dromara.dynamictp.core.converter.ExecutorConverter;
|
||||
import org.dromara.dynamictp.core.notifier.manager.AlarmManager;
|
||||
import org.dromara.dynamictp.core.notifier.manager.NoticeManager;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import org.dromara.dynamictp.core.support.ExecutorAdapter;
|
||||
import com.github.dadiyang.equator.Equator;
|
||||
import com.github.dadiyang.equator.FieldInfo;
|
||||
import com.github.dadiyang.equator.GetterBaseEquator;
|
||||
@ -39,11 +27,20 @@ import lombok.val;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.entity.NotifyPlatform;
|
||||
import org.dromara.dynamictp.common.entity.ThreadPoolStats;
|
||||
import org.dromara.dynamictp.common.entity.TpExecutorProps;
|
||||
import org.dromara.dynamictp.common.entity.TpMainFields;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.spring.OnceApplicationContextEventListener;
|
||||
import org.dromara.dynamictp.common.util.StreamUtil;
|
||||
import org.dromara.dynamictp.core.converter.ExecutorConverter;
|
||||
import org.dromara.dynamictp.core.notifier.manager.AlarmManager;
|
||||
import org.dromara.dynamictp.core.notifier.manager.NoticeManager;
|
||||
import org.dromara.dynamictp.core.support.ExecutorAdapter;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
import org.springframework.context.event.GenericApplicationListener;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.core.ResolvableType;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@ -51,9 +48,9 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
import static org.dromara.dynamictp.common.constant.DynamicTpConst.PROPERTIES_CHANGE_SHOW_STYLE;
|
||||
import static org.dromara.dynamictp.core.notifier.manager.NotifyHelper.updateNotifyInfo;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
/**
|
||||
* AbstractDtpAdapter related
|
||||
@ -63,43 +60,20 @@ import static java.util.stream.Collectors.toList;
|
||||
* @since 1.0.6
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class AbstractDtpAdapter implements DtpAdapter, GenericApplicationListener {
|
||||
public abstract class AbstractDtpAdapter extends OnceApplicationContextEventListener implements DtpAdapter {
|
||||
|
||||
private static final Equator EQUATOR = new GetterBaseEquator();
|
||||
|
||||
protected final Map<String, ExecutorWrapper> executors = Maps.newHashMap();
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
//Compatible with Spring4.x
|
||||
return Ordered.LOWEST_PRECEDENCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsSourceType(Class<?> sourceType) {
|
||||
//Compatible with Spring4.x
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsEventType(ResolvableType resolvableType) {
|
||||
Class<?> type = resolvableType.getRawClass();
|
||||
if (type != null) {
|
||||
return ContextRefreshedEvent.class.isAssignableFrom(type);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ApplicationEvent event) {
|
||||
if (event instanceof ContextRefreshedEvent) {
|
||||
try {
|
||||
DtpProperties dtpProperties = ApplicationContextHolder.getBean(DtpProperties.class);
|
||||
initialize();
|
||||
refresh(dtpProperties);
|
||||
} catch (Exception e) {
|
||||
log.error("Init third party thread pool failed.", e);
|
||||
}
|
||||
protected void onContextRefreshedEvent(ContextRefreshedEvent event) {
|
||||
try {
|
||||
DtpProperties dtpProperties = ApplicationContextHolder.getBean(DtpProperties.class);
|
||||
initialize();
|
||||
refresh(dtpProperties);
|
||||
} catch (Exception e) {
|
||||
log.error("Init third party thread pool failed.", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.adapter.common;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.event.AlarmCheckEvent;
|
||||
import org.dromara.dynamictp.common.event.CollectEvent;
|
||||
import org.dromara.dynamictp.common.event.RefreshEvent;
|
||||
|
@ -20,7 +20,7 @@ package org.dromara.dynamictp.adapter.dubbo.alibaba;
|
||||
import com.alibaba.dubbo.common.extension.ExtensionLoader;
|
||||
import com.alibaba.dubbo.common.store.DataStore;
|
||||
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -17,12 +17,6 @@
|
||||
|
||||
package org.dromara.dynamictp.adapter.dubbo.apache;
|
||||
|
||||
import org.apache.dubbo.config.spring.context.event.ServiceBeanExportedEvent;
|
||||
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.util.ReflectionUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import lombok.val;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
@ -31,9 +25,14 @@ import org.apache.dubbo.common.extension.ExtensionLoader;
|
||||
import org.apache.dubbo.common.store.DataStore;
|
||||
import org.apache.dubbo.common.threadpool.manager.DefaultExecutorRepository;
|
||||
import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;
|
||||
import org.apache.dubbo.config.spring.context.event.ServiceBeanExportedEvent;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.util.ReflectionUtil;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.core.ResolvableType;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
@ -55,15 +54,6 @@ public class ApacheDubboDtpAdapter extends AbstractDtpAdapter {
|
||||
|
||||
private static final String EXECUTOR_SERVICE_COMPONENT_KEY = ExecutorService.class.getName();
|
||||
|
||||
@Override
|
||||
public boolean supportsEventType(ResolvableType resolvableType) {
|
||||
Class<?> type = resolvableType.getRawClass();
|
||||
if (type != null) {
|
||||
return ServiceBeanExportedEvent.class.isAssignableFrom(type);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ApplicationEvent event) {
|
||||
if (event instanceof ServiceBeanExportedEvent) {
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.adapter.hystrix;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.entity.TpExecutorProps;
|
||||
import org.dromara.dynamictp.common.util.ReflectionUtil;
|
||||
import com.netflix.hystrix.HystrixThreadPoolKey;
|
||||
|
@ -18,7 +18,7 @@
|
||||
package org.dromara.dynamictp.adapter.hystrix;
|
||||
|
||||
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.entity.NotifyPlatform;
|
||||
import org.dromara.dynamictp.common.entity.TpExecutorProps;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
|
@ -18,7 +18,7 @@
|
||||
package org.dromara.dynamictp.adapter.motan;
|
||||
|
||||
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.util.ReflectionUtil;
|
||||
|
@ -18,7 +18,7 @@
|
||||
package org.dromara.dynamictp.adapter.okhttp3;
|
||||
|
||||
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -18,7 +18,7 @@
|
||||
package org.dromara.dynamictp.adapter.rabbitmq;
|
||||
|
||||
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.util.ReflectionUtil;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
|
@ -24,7 +24,7 @@ import com.aliyun.openservices.shade.com.alibaba.rocketmq.client.impl.consumer.C
|
||||
import com.aliyun.openservices.shade.com.alibaba.rocketmq.client.impl.consumer.ConsumeMessageOrderlyService;
|
||||
import com.aliyun.openservices.shade.com.alibaba.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl;
|
||||
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.util.ReflectionUtil;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
|
@ -15,7 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.dromara.dynamictp.common;
|
||||
package org.dromara.dynamictp.common.spring;
|
||||
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.context.ApplicationContext;
|
@ -0,0 +1,114 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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 org.dromara.dynamictp.common.spring;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ApplicationContextEvent;
|
||||
import org.springframework.context.event.ContextClosedEvent;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
import org.springframework.context.event.ContextStartedEvent;
|
||||
import org.springframework.context.event.ContextStoppedEvent;
|
||||
|
||||
import static org.springframework.util.ObjectUtils.nullSafeEquals;
|
||||
|
||||
/**
|
||||
* The abstract class {@link ApplicationListener} for {@link ApplicationEvent} guarantees just one-time execution
|
||||
* and prevents the event propagation in the hierarchical {@link ApplicationContext ApplicationContexts}
|
||||
* @author yanhom
|
||||
* @since 1.1.4
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class OnceApplicationContextEventListener implements ApplicationContextAware, ApplicationListener<ApplicationEvent> {
|
||||
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
public OnceApplicationContextEventListener() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ApplicationEvent event) {
|
||||
if (isOriginalEventSource(event) && event instanceof ApplicationContextEvent) {
|
||||
if (event instanceof ContextRefreshedEvent) {
|
||||
onContextRefreshedEvent((ContextRefreshedEvent) event);
|
||||
} else if (event instanceof ContextStartedEvent) {
|
||||
onContextStartedEvent((ContextStartedEvent) event);
|
||||
} else if (event instanceof ContextStoppedEvent) {
|
||||
onContextStoppedEvent((ContextStoppedEvent) event);
|
||||
} else if (event instanceof ContextClosedEvent) {
|
||||
onContextClosedEvent((ContextClosedEvent) event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The subclass overrides this method to handle {@link ContextRefreshedEvent}
|
||||
*
|
||||
* @param event {@link ContextRefreshedEvent}
|
||||
*/
|
||||
protected void onContextRefreshedEvent(ContextRefreshedEvent event) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* The subclass overrides this method to handle {@link ContextStartedEvent}
|
||||
*
|
||||
* @param event {@link ContextStartedEvent}
|
||||
*/
|
||||
protected void onContextStartedEvent(ContextStartedEvent event) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* The subclass overrides this method to handle {@link ContextStoppedEvent}
|
||||
*
|
||||
* @param event {@link ContextStoppedEvent}
|
||||
*/
|
||||
protected void onContextStoppedEvent(ContextStoppedEvent event) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* The subclass overrides this method to handle {@link ContextClosedEvent}
|
||||
*
|
||||
* @param event {@link ContextClosedEvent}
|
||||
*/
|
||||
protected void onContextClosedEvent(ContextClosedEvent event) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Is original {@link ApplicationContext} as the event source
|
||||
* @param event {@link ApplicationEvent}
|
||||
* @return if original, return <code>true</code>, or <code>false</code>
|
||||
*/
|
||||
private boolean isOriginalEventSource(ApplicationEvent event) {
|
||||
return nullSafeEquals(this.applicationContext, event.getSource());
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setApplicationContext(ApplicationContext applicationContext) {
|
||||
this.applicationContext = applicationContext;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.common.util;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.entity.ServiceInstance;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
@ -31,6 +31,7 @@ import org.dromara.dynamictp.common.ex.DtpException;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.queue.MemorySafeLinkedBlockingQueue;
|
||||
import org.dromara.dynamictp.common.queue.VariableLinkedBlockingQueue;
|
||||
import org.dromara.dynamictp.common.spring.OnceApplicationContextEventListener;
|
||||
import org.dromara.dynamictp.common.util.StreamUtil;
|
||||
import org.dromara.dynamictp.core.converter.ExecutorConverter;
|
||||
import org.dromara.dynamictp.core.notifier.manager.NoticeManager;
|
||||
@ -41,7 +42,6 @@ import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import org.dromara.dynamictp.core.support.task.wrapper.TaskWrapper;
|
||||
import org.dromara.dynamictp.core.support.task.wrapper.TaskWrappers;
|
||||
import org.dromara.dynamictp.core.thread.DtpExecutor;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
|
||||
import java.util.Collections;
|
||||
@ -63,7 +63,7 @@ import static org.dromara.dynamictp.common.constant.DynamicTpConst.PROPERTIES_CH
|
||||
* @since 1.0.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class DtpRegistry implements ApplicationListener<ContextRefreshedEvent> {
|
||||
public class DtpRegistry extends OnceApplicationContextEventListener {
|
||||
|
||||
/**
|
||||
* Maintain all automatically registered and manually registered Executors(DtpExecutors and JUC ThreadPoolExecutors).
|
||||
@ -327,7 +327,7 @@ public class DtpRegistry implements ApplicationListener<ContextRefreshedEvent> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
||||
protected void onContextRefreshedEvent(ContextRefreshedEvent event) {
|
||||
Set<String> remoteExecutors = Collections.emptySet();
|
||||
if (CollectionUtils.isNotEmpty(dtpProperties.getExecutors())) {
|
||||
remoteExecutors = dtpProperties.getExecutors().stream()
|
||||
|
@ -17,19 +17,19 @@
|
||||
|
||||
package org.dromara.dynamictp.core.monitor;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.entity.ThreadPoolStats;
|
||||
import org.dromara.dynamictp.common.event.AlarmCheckEvent;
|
||||
import org.dromara.dynamictp.common.event.CollectEvent;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.spring.OnceApplicationContextEventListener;
|
||||
import org.dromara.dynamictp.core.DtpRegistry;
|
||||
import org.dromara.dynamictp.core.converter.ExecutorConverter;
|
||||
import org.dromara.dynamictp.core.handler.CollectorHandler;
|
||||
import org.dromara.dynamictp.core.notifier.manager.AlarmManager;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import org.dromara.dynamictp.core.thread.NamedThreadFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
|
||||
import java.util.Set;
|
||||
@ -46,7 +46,7 @@ import static org.dromara.dynamictp.common.constant.DynamicTpConst.SCHEDULE_NOTI
|
||||
* @since 1.0.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class DtpMonitor implements ApplicationListener<ContextRefreshedEvent> {
|
||||
public class DtpMonitor extends OnceApplicationContextEventListener {
|
||||
|
||||
private static final ScheduledExecutorService MONITOR_EXECUTOR = new ScheduledThreadPoolExecutor(
|
||||
1, new NamedThreadFactory("dtp-monitor", true));
|
||||
@ -58,7 +58,7 @@ public class DtpMonitor implements ApplicationListener<ContextRefreshedEvent> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
||||
protected void onContextRefreshedEvent(ContextRefreshedEvent event) {
|
||||
MONITOR_EXECUTOR.scheduleWithFixedDelay(this::run,
|
||||
0, dtpProperties.getMonitorInterval(), TimeUnit.SECONDS);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.core.notifier.manager;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.em.NotifyTypeEnum;
|
||||
import org.dromara.dynamictp.common.pattern.filter.Filter;
|
||||
import org.dromara.dynamictp.common.pattern.filter.InvokerChain;
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.core.notifier.manager;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.em.NotifyItemEnum;
|
||||
import org.dromara.dynamictp.common.entity.DtpExecutorProps;
|
||||
import org.dromara.dynamictp.common.entity.NotifyItem;
|
||||
|
@ -21,7 +21,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import lombok.val;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.em.ConfigFileTypeEnum;
|
||||
import org.dromara.dynamictp.common.event.RefreshEvent;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.core.spring;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.springframework.context.EnvironmentAware;
|
||||
import org.springframework.context.annotation.DeferredImportSelector;
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.core.support.task.runnable;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.timer.HashedWheelTimer;
|
||||
import org.dromara.dynamictp.common.timer.Timeout;
|
||||
import org.dromara.dynamictp.core.thread.DtpExecutor;
|
||||
|
@ -49,6 +49,11 @@
|
||||
<artifactId>spring-cloud-starter-bootstrap</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.micrometer</groupId>
|
||||
<artifactId>micrometer-registry-prometheus</artifactId>
|
||||
|
@ -20,11 +20,13 @@ package org.dromara.dynamictp.example;
|
||||
import org.dromara.dynamictp.core.spring.EnableDynamicTp;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
/**
|
||||
* @author Redick01
|
||||
*/
|
||||
@EnableDynamicTp
|
||||
@EnableFeignClients
|
||||
@SpringBootApplication
|
||||
public class CloudConsulExampleApplication {
|
||||
|
||||
|
@ -20,6 +20,7 @@ package org.dromara.dynamictp.example.controller;
|
||||
import org.dromara.dynamictp.core.DtpRegistry;
|
||||
import org.dromara.dynamictp.core.support.task.runnable.NamedRunnable;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.dynamictp.example.feign.DynamicTpFeign;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@ -40,6 +41,9 @@ public class TestController {
|
||||
@Resource
|
||||
private ThreadPoolExecutor dtpExecutor1;
|
||||
|
||||
@Resource
|
||||
private DynamicTpFeign dynamicTpFeign;
|
||||
|
||||
@GetMapping("/dtp-consul-example/test")
|
||||
public String test() throws InterruptedException {
|
||||
task();
|
||||
|
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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 org.dromara.dynamictp.example.feign;
|
||||
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
/**
|
||||
* DynamicTpFeign related
|
||||
*
|
||||
* @author yanhom
|
||||
* @since 1.0.0
|
||||
**/
|
||||
@FeignClient(name = "dynamicTpFeign", url = "https://dynamictp.cn")
|
||||
public interface DynamicTpFeign {
|
||||
|
||||
/**
|
||||
* test
|
||||
* @return result
|
||||
*/
|
||||
@GetMapping(value = "/guide/use/quick-start.html")
|
||||
String test();
|
||||
}
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.extension.notify.email;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.em.NotifyItemEnum;
|
||||
import org.dromara.dynamictp.common.em.NotifyPlatformEnum;
|
||||
import org.dromara.dynamictp.common.entity.AlarmInfo;
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.logging;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
@ -19,8 +19,8 @@ package org.dromara.dynamictp.starter.adapter.webserver.adapter;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.properties.DtpProperties;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.core.converter.ExecutorConverter;
|
||||
import org.dromara.dynamictp.core.support.ExecutorWrapper;
|
||||
import org.springframework.boot.web.context.WebServerApplicationContext;
|
||||
@ -28,7 +28,7 @@ import org.springframework.boot.web.context.WebServerInitializedEvent;
|
||||
import org.springframework.boot.web.server.WebServer;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationEvent;
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@ -40,16 +40,8 @@ import java.util.concurrent.Executor;
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
public abstract class AbstractWebServerDtpAdapter<A extends Executor> extends AbstractDtpAdapter {
|
||||
|
||||
@Override
|
||||
public boolean supportsEventType(ResolvableType resolvableType) {
|
||||
Class<?> type = resolvableType.getRawClass();
|
||||
if (type != null) {
|
||||
return WebServerInitializedEvent.class.isAssignableFrom(type);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public abstract class AbstractWebServerDtpAdapter<A extends Executor> extends AbstractDtpAdapter
|
||||
implements ApplicationListener<ApplicationEvent> {
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(ApplicationEvent event) {
|
||||
|
@ -21,7 +21,7 @@ import cn.hutool.core.io.FileUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.val;
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.entity.JvmStats;
|
||||
import org.dromara.dynamictp.common.entity.Metrics;
|
||||
import org.dromara.dynamictp.core.DtpRegistry;
|
||||
|
@ -18,7 +18,7 @@
|
||||
package org.dromara.dynamictp.test.core.notify;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.em.NotifyItemEnum;
|
||||
import org.dromara.dynamictp.common.entity.NotifyItem;
|
||||
import org.dromara.dynamictp.common.entity.NotifyPlatform;
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
package org.dromara.dynamictp.test.core.spring;
|
||||
|
||||
import org.dromara.dynamictp.common.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
|
||||
import org.dromara.dynamictp.core.DtpRegistry;
|
||||
import org.dromara.dynamictp.core.monitor.DtpMonitor;
|
||||
import org.dromara.dynamictp.core.spring.DtpBaseBeanConfiguration;
|
||||
|
Loading…
Reference in New Issue
Block a user