Skip to content

Commit

Permalink
add mq gray plugin declare/service
Browse files Browse the repository at this point in the history
Signed-off-by: chengyouling <spadgerlin888@163.com>
  • Loading branch information
chengyouling committed Sep 12, 2024
1 parent a61202c commit a8ff652
Show file tree
Hide file tree
Showing 37 changed files with 1,586 additions and 95 deletions.
36 changes: 36 additions & 0 deletions sermant-plugins/sermant-mq-grayscale/mq-config-common/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>sermant-mq-grayscale</artifactId>
<groupId>io.sermant</groupId>
<version>1.0.0</version>
</parent>

<artifactId>mq-config-common</artifactId>

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>io.sermant</groupId>
<artifactId>sermant-agentcore-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import io.sermant.core.config.common.ConfigTypeKey;
import io.sermant.core.plugin.config.PluginConfig;
import io.sermant.mq.grayscale.utils.SubscriptionDataUtils;

import java.util.ArrayList;
import java.util.HashMap;
Expand All @@ -35,6 +34,11 @@
**/
@ConfigTypeKey("grayscale.mq.config")
public class MqGrayscaleConfig implements PluginConfig {
/**
* afa symbol
*/
private static final String AFA_SYMBOL = "@";

private boolean enabled = false;

private List<GrayTagItem> grayscale = new ArrayList<>();
Expand Down Expand Up @@ -122,12 +126,12 @@ public String buildAllTrafficTagInfoToStr() {
StringBuilder sb = new StringBuilder();
for (GrayTagItem item : grayscale) {
if (sb.length() > 0) {
sb.append(SubscriptionDataUtils.AFA_SYMBOL);
sb.append(AFA_SYMBOL);
}
sb.append(item.getConsumerGroupTag());
for (Map.Entry<String, String> entry : item.getTrafficTag().entrySet()) {
sb.append(entry.getKey())
.append(SubscriptionDataUtils.AFA_SYMBOL)
.append(AFA_SYMBOL)
.append(entry.getValue());
}
}
Expand Down
47 changes: 47 additions & 0 deletions sermant-plugins/sermant-mq-grayscale/mq-config-service/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>sermant-mq-grayscale</artifactId>
<groupId>io.sermant</groupId>
<version>1.0.0</version>
</parent>

<artifactId>mq-config-service</artifactId>

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<package.plugin.type>service</package.plugin.type>
</properties>

<dependencies>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
<dependency>
<groupId>io.sermant</groupId>
<artifactId>sermant-agentcore-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.sermant</groupId>
<artifactId>mq-config-common</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Copyright (C) 2024-2024 Sermant Authors. 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.
*/

package io.sermant.mq.grayscale.listener;

import io.sermant.mq.grayscale.config.MqGrayscaleConfig;

/**
* grayscale config cache
*
* @author chengyouling
* @since 2024-09-12
**/
public class MqGrayConfigCache {

Check failure on line 27 in sermant-plugins/sermant-mq-grayscale/mq-config-service/src/main/java/io/sermant/mq/grayscale/listener/MqGrayConfigCache.java

View workflow job for this annotation

GitHub Actions / Checkstyle

[Checkstyle Check] reported by reviewdog 🐶 Utility classes should not have a public or default constructor. Raw Output: /home/runner/work/Sermant/Sermant/./sermant-plugins/sermant-mq-grayscale/mq-config-service/src/main/java/io/sermant/mq/grayscale/listener/MqGrayConfigCache.java:27:1: error: Utility classes should not have a public or default constructor. (com.puppycrawl.tools.checkstyle.checks.design.HideUtilityClassConstructorCheck)
private static MqGrayscaleConfig cacheConfig;

/**
* get cache mqGrayscaleConfig
*/
public static MqGrayscaleConfig getCacheConfig() {

Check failure on line 33 in sermant-plugins/sermant-mq-grayscale/mq-config-service/src/main/java/io/sermant/mq/grayscale/listener/MqGrayConfigCache.java

View workflow job for this annotation

GitHub Actions / Checkstyle

[Checkstyle Check] reported by reviewdog 🐶 @return tag should be present and have description. Raw Output: /home/runner/work/Sermant/Sermant/./sermant-plugins/sermant-mq-grayscale/mq-config-service/src/main/java/io/sermant/mq/grayscale/listener/MqGrayConfigCache.java:33:0: error: @return tag should be present and have description. (com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck)
return cacheConfig;
}

/**
* set cache mqGrayscaleConfig
*/
public static void setCacheConfig(MqGrayscaleConfig config) {

Check failure on line 40 in sermant-plugins/sermant-mq-grayscale/mq-config-service/src/main/java/io/sermant/mq/grayscale/listener/MqGrayConfigCache.java

View workflow job for this annotation

GitHub Actions / Checkstyle

[Checkstyle Check] reported by reviewdog 🐶 Expected @param tag for 'config'. Raw Output: /home/runner/work/Sermant/Sermant/./sermant-plugins/sermant-mq-grayscale/mq-config-service/src/main/java/io/sermant/mq/grayscale/listener/MqGrayConfigCache.java:40:57: error: Expected @param tag for 'config'. (com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck)
cacheConfig = config;
}

/**
* clear cache mqGrayscaleConfig
*/
public static void clearCacheConfig() {
cacheConfig = new MqGrayscaleConfig();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
* limitations under the License.
*/

package io.sermant.mq.grayscale.config;
package io.sermant.mq.grayscale.listener;

import io.sermant.core.common.LoggerFactory;
import io.sermant.core.service.dynamicconfig.common.DynamicConfigEvent;
import io.sermant.core.service.dynamicconfig.common.DynamicConfigEventType;
import io.sermant.core.utils.StringUtils;
import io.sermant.mq.grayscale.utils.MqGrayscaleConfigUtils;
import io.sermant.mq.grayscale.config.MqGrayscaleConfig;

import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
Expand Down Expand Up @@ -64,15 +64,15 @@ public void handle(DynamicConfigEvent event) {
return;
}
if (event.getEventType() == DynamicConfigEventType.DELETE) {
MqGrayscaleConfigUtils.resetGrayscaleConfig();
MqGrayConfigCache.clearCacheConfig();
return;
}
if (!StringUtils.isEmpty(event.getContent())) {
LOGGER.info(String.format(Locale.ROOT, "mqGrayscale [%s] dynamicConfig context: %s",
event.getGroup(), event.getContent()));
MqGrayscaleConfig config = yaml.loadAs(event.getContent(), MqGrayscaleConfig.class);
if (config != null) {
MqGrayscaleConfigUtils.setGrayscaleConfig(config, event.getEventType());
MqGrayConfigCache.setCacheConfig(config);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

package io.sermant.mq.grayscale.config;
package io.sermant.mq.grayscale.listener;

import io.sermant.core.service.dynamicconfig.common.DynamicConfigEvent;
import io.sermant.core.service.dynamicconfig.common.DynamicConfigListener;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* Copyright (C) 2024-2024 Sermant Authors. 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.
*/

package io.sermant.mq.grayscale.service;

import io.sermant.core.common.LoggerFactory;
import io.sermant.core.config.ConfigManager;
import io.sermant.core.plugin.config.ServiceMeta;
import io.sermant.core.plugin.service.PluginService;
import io.sermant.core.plugin.subscribe.CommonGroupConfigSubscriber;
import io.sermant.core.plugin.subscribe.ConfigSubscriber;
import io.sermant.mq.grayscale.listener.MqGrayConfigListener;

import java.util.logging.Logger;

/**
* grayscale dynamic config service
*
* @author chengyouling
* @since 2024-05-27
**/
public class MqGrayDynamicConfigService implements PluginService {
private static final Logger LOGGER = LoggerFactory.getLogger();

@Override
public void start() {
ConfigSubscriber subscriber = new CommonGroupConfigSubscriber(
ConfigManager.getConfig(ServiceMeta.class).getService(), new MqGrayConfigListener(),
"mq-grayscale");
subscriber.subscribe();
LOGGER.info("Success to subscribe mq-grayscale config");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#
# Copyright (C) 2024-2024 Sermant Authors. 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.
#

io.sermant.mq.grayscale.service.MqGrayDynamicConfigService
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<version>1.0.0</version>
</parent>

<artifactId>sermant-mq-grayscale-plugin</artifactId>
<artifactId>mq-grayscale-rocketmq-plugin</artifactId>

<properties>
<maven.compiler.source>8</maven.compiler.source>
Expand All @@ -20,12 +20,14 @@

<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<groupId>io.sermant</groupId>
<artifactId>mq-config-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<groupId>io.sermant</groupId>
<artifactId>mq-config-service</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.sermant</groupId>
Expand All @@ -52,6 +54,11 @@
<artifactId>mockito-inline</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

package io.sermant.mq.grayscale.config;
package io.sermant.mq.grayscale.rocketmq.config;

import org.apache.rocketmq.client.impl.factory.MQClientInstance;

Expand All @@ -24,7 +24,7 @@
* @author chengyouling
* @since 2024-05-27
**/
public class MqConsumerClientConfig {
public class RocketMqConsumerClientConfig {
private String topic;

private String address;
Expand All @@ -40,7 +40,7 @@ public class MqConsumerClientConfig {
* @param topic topic
* @param consumerGroup consumerGroup
*/
public MqConsumerClientConfig(String address, String topic, String consumerGroup) {
public RocketMqConsumerClientConfig(String address, String topic, String consumerGroup) {
this.address = address;
this.topic = topic;
this.consumerGroup = consumerGroup;
Expand Down
Loading

0 comments on commit a8ff652

Please sign in to comment.