Search in sources :

Example 1 with SilenceSwitchOnEvent

use of com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent in project LinkAgent by shulieTech.

the class SilenceSwitch method compareIsChangeAndSet.

@Override
public Boolean compareIsChangeAndSet(ClusterTestConfig config, Boolean newValue) {
    boolean silenceSwitchOn = PradarSwitcher.silenceSwitchOn();
    if (ObjectUtils.equals(newValue, silenceSwitchOn)) {
        return Boolean.FALSE;
    }
    // 变更后配置更新到内存
    if (newValue) {
        SilenceSwitchOnEvent event = new SilenceSwitchOnEvent(this);
        EventRouter.router().publish(event);
        PradarSwitcher.turnSilenceSwitchOn();
        config.setSilenceSwitchOn(true);
    } else {
        SilenceSwitchOffEvent event = new SilenceSwitchOffEvent(this);
        EventRouter.router().publish(event);
        PradarSwitcher.turnSilenceSwitchOff();
        config.setSilenceSwitchOn(false);
    }
    if (LOGGER.isInfoEnabled()) {
        LOGGER.info("publish silence switch config successful. config={}", newValue);
    }
    return Boolean.TRUE;
}
Also used : SilenceSwitchOnEvent(com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent) SilenceSwitchOffEvent(com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOffEvent)

Example 2 with SilenceSwitchOnEvent

use of com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent in project LinkAgent by shulieTech.

the class ShadowConsumerDisableListenerImpl method onEvent.

@Override
public EventResult onEvent(IEvent event) {
    // any event flush LAST_MQ_WHITELIST
    LastMqWhiteListHolder.LAST_MQ_WHITELIST.set(Collections.<String>emptySet());
    try {
        if (event instanceof ShadowConsumerDisableEvent) {
            ShadowConsumerDisableEvent shadowConsumerDisableEvent = (ShadowConsumerDisableEvent) event;
            List<ShadowConsumerDisableInfo> list = shadowConsumerDisableEvent.getTarget();
            disableBatch(list);
        } else if (event instanceof ClusterTestSwitchOffEvent) {
            disableAll();
        } else if (event instanceof SilenceSwitchOnEvent) {
            disableAll();
        }
    } catch (Throwable e) {
        EventResult.error(event.getTarget(), e.getMessage());
    }
    return EventResult.success(event.getTarget());
}
Also used : SilenceSwitchOnEvent(com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent) ShadowConsumerDisableEvent(com.pamirs.pradar.pressurement.agent.event.impl.ShadowConsumerDisableEvent) ShadowConsumerDisableInfo(com.pamirs.pradar.pressurement.agent.listener.model.ShadowConsumerDisableInfo) ClusterTestSwitchOffEvent(com.pamirs.pradar.pressurement.agent.event.impl.ClusterTestSwitchOffEvent)

Example 3 with SilenceSwitchOnEvent

use of com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent in project LinkAgent by shulieTech.

the class ConsumerRegistry method addListener.

private static void addListener(final DefaultMQPushConsumer businessConsumer) {
    final RebalanceImpl rebalance = businessConsumer.getDefaultMQPushConsumerImpl().getRebalanceImpl();
    final PradarEventListener listener = new PradarEventListener() {

        @Override
        public EventResult onEvent(IEvent event) {
            if (event instanceof ClusterTestSwitchOnEvent) {
                try {
                    // 取出配置创建影子消费者
                    DefaultMQPushConsumer defaultMQPushConsumer = buildMQPushConsumer(businessConsumer);
                    if (defaultMQPushConsumer != null) {
                        defaultMQPushConsumer.start();
                    }
                } catch (MQClientException e) {
                    logger.error(e.getMessage());
                    return EventResult.error("apache-rocketmq-plugin-open", "Apache-RocketMQ PT Consumer start failed: " + e.getMessage());
                }
                return EventResult.success("apache-rocketmq-plugin-open");
            } else if (event instanceof ClusterTestSwitchOffEvent || event instanceof SilenceSwitchOnEvent) {
                return shutdownShadowConsumer(businessConsumer);
            } else if (event instanceof ShadowConsumerDisableEvent) {
                String group = businessConsumer.getConsumerGroup();
                Set<String> topics = rebalance.getSubscriptionInner().keySet();
                for (String topic : topics) {
                    List<ShadowConsumerDisableInfo> disableInfos = ((ShadowConsumerDisableEvent) event).getTarget();
                    for (ShadowConsumerDisableInfo disableInfo : disableInfos) {
                        if (topic.equals(disableInfo.getTopic()) && group.equals(disableInfo.getConsumerGroup())) {
                            return shutdownShadowConsumer(businessConsumer);
                        }
                    }
                }
            }
            return EventResult.IGNORE;
        }

        @Override
        public int order() {
            return 4;
        }
    };
    PradarEventListener old = listeners.putIfAbsent(businessConsumer, listener);
    if (old == null) {
        EventRouter.router().addListener(listener);
    }
}
Also used : IEvent(com.pamirs.pradar.pressurement.agent.event.IEvent) RebalanceImpl(org.apache.rocketmq.client.impl.consumer.RebalanceImpl) SilenceSwitchOnEvent(com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent) DefaultMQPushConsumer(org.apache.rocketmq.client.consumer.DefaultMQPushConsumer) ShadowConsumerDisableEvent(com.pamirs.pradar.pressurement.agent.event.impl.ShadowConsumerDisableEvent) ShadowConsumerDisableInfo(com.pamirs.pradar.pressurement.agent.listener.model.ShadowConsumerDisableInfo) PradarEventListener(com.pamirs.pradar.pressurement.agent.listener.PradarEventListener) ClusterTestSwitchOnEvent(com.pamirs.pradar.pressurement.agent.event.impl.ClusterTestSwitchOnEvent) MQClientException(org.apache.rocketmq.client.exception.MQClientException) ClusterTestSwitchOffEvent(com.pamirs.pradar.pressurement.agent.event.impl.ClusterTestSwitchOffEvent)

Example 4 with SilenceSwitchOnEvent

use of com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent in project LinkAgent by shulieTech.

the class ShadowConsumerDisableListenerImpl method onEvent.

@Override
public EventResult onEvent(IEvent event) {
    try {
        if (event instanceof ShadowConsumerDisableEvent) {
            ShadowConsumerDisableEvent shadowConsumerDisableEvent = (ShadowConsumerDisableEvent) event;
            List<ShadowConsumerDisableInfo> list = shadowConsumerDisableEvent.getTarget();
            disableBatch(list);
        } else if (event instanceof ClusterTestSwitchOffEvent) {
            disableAll();
        } else if (event instanceof SilenceSwitchOnEvent) {
            disableAll();
        }
    } catch (Throwable e) {
        EventResult.error(event.getTarget(), e.getMessage());
    }
    return EventResult.success(event.getTarget());
}
Also used : SilenceSwitchOnEvent(com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent) ShadowConsumerDisableEvent(com.pamirs.pradar.pressurement.agent.event.impl.ShadowConsumerDisableEvent) ShadowConsumerDisableInfo(com.pamirs.pradar.pressurement.agent.listener.model.ShadowConsumerDisableInfo) ClusterTestSwitchOffEvent(com.pamirs.pradar.pressurement.agent.event.impl.ClusterTestSwitchOffEvent)

Example 5 with SilenceSwitchOnEvent

use of com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent in project LinkAgent by shulieTech.

the class ConsumerRegistry method addListener.

private static void addListener(final DefaultMQPushConsumer businessConsumer) {
    final PradarEventListener listener = new PradarEventListener() {

        @Override
        public EventResult onEvent(IEvent event) {
            if (event instanceof ClusterTestSwitchOnEvent) {
                try {
                    // 取出配置创建影子消费者
                    DefaultMQPushConsumer defaultMQPushConsumer = buildMQPushConsumer(businessConsumer);
                    if (defaultMQPushConsumer != null) {
                        defaultMQPushConsumer.start();
                    }
                } catch (MQClientException e) {
                    logger.error(e.getMessage());
                    return EventResult.error("alibaba-rocketmq-plugin-open", "Alibaba-RocketMQ PT Consumer start failed: " + e.getMessage());
                }
                return EventResult.success("alibaba-rocketmq-plugin-open");
            } else if (event instanceof ClusterTestSwitchOffEvent || event instanceof SilenceSwitchOnEvent) {
                return shutdownShadowConsumer(businessConsumer);
            } else if (event instanceof ShadowConsumerDisableEvent) {
                String group = businessConsumer.getConsumerGroup();
                Set<String> topics = businessConsumer.getDefaultMQPushConsumerImpl().getRebalanceImpl().getSubscriptionInner().keySet();
                for (String topic : topics) {
                    List<ShadowConsumerDisableInfo> disableInfos = ((ShadowConsumerDisableEvent) event).getTarget();
                    for (ShadowConsumerDisableInfo disableInfo : disableInfos) {
                        if (topic.equals(disableInfo.getTopic()) && group.equals(disableInfo.getConsumerGroup())) {
                            return shutdownShadowConsumer(businessConsumer);
                        }
                    }
                }
            }
            return EventResult.IGNORE;
        }

        @Override
        public int order() {
            return 4;
        }
    };
    PradarEventListener old = listeners.putIfAbsent(businessConsumer, listener);
    if (old == null) {
        EventRouter.router().addListener(listener);
    }
}
Also used : PradarEventListener(com.pamirs.pradar.pressurement.agent.listener.PradarEventListener) IEvent(com.pamirs.pradar.pressurement.agent.event.IEvent) ClusterTestSwitchOnEvent(com.pamirs.pradar.pressurement.agent.event.impl.ClusterTestSwitchOnEvent) SilenceSwitchOnEvent(com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent) DefaultMQPushConsumer(com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer) MQClientException(com.alibaba.rocketmq.client.exception.MQClientException) ShadowConsumerDisableEvent(com.pamirs.pradar.pressurement.agent.event.impl.ShadowConsumerDisableEvent) ClusterTestSwitchOffEvent(com.pamirs.pradar.pressurement.agent.event.impl.ClusterTestSwitchOffEvent) ShadowConsumerDisableInfo(com.pamirs.pradar.pressurement.agent.listener.model.ShadowConsumerDisableInfo)

Aggregations

SilenceSwitchOnEvent (com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOnEvent)5 ClusterTestSwitchOffEvent (com.pamirs.pradar.pressurement.agent.event.impl.ClusterTestSwitchOffEvent)4 ShadowConsumerDisableEvent (com.pamirs.pradar.pressurement.agent.event.impl.ShadowConsumerDisableEvent)4 ShadowConsumerDisableInfo (com.pamirs.pradar.pressurement.agent.listener.model.ShadowConsumerDisableInfo)4 IEvent (com.pamirs.pradar.pressurement.agent.event.IEvent)2 ClusterTestSwitchOnEvent (com.pamirs.pradar.pressurement.agent.event.impl.ClusterTestSwitchOnEvent)2 PradarEventListener (com.pamirs.pradar.pressurement.agent.listener.PradarEventListener)2 DefaultMQPushConsumer (com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer)1 MQClientException (com.alibaba.rocketmq.client.exception.MQClientException)1 SilenceSwitchOffEvent (com.pamirs.pradar.pressurement.agent.event.impl.SilenceSwitchOffEvent)1 DefaultMQPushConsumer (org.apache.rocketmq.client.consumer.DefaultMQPushConsumer)1 MQClientException (org.apache.rocketmq.client.exception.MQClientException)1 RebalanceImpl (org.apache.rocketmq.client.impl.consumer.RebalanceImpl)1