This is an automated email from the ASF dual-hosted git repository. shenlin pushed a commit to branch runtimer in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git
commit 9d7b87e431392e2b28972d8f8613b4b6de8587b9 Author: wangkai <[email protected]> AuthorDate: Mon Jun 5 18:37:59 2023 +0800 1.add readme 2.modify ValidateFilter, add default filter --- docs/cn/RocketMQEventBridgeDatabaseUsage.md | 29 ++++++++++++++ docs/cn/RocketMQEventBridgeRuleValidation.md | 44 +++++++++++++++++++++ docs/cn/images/h2.png | Bin 0 -> 188366 bytes .../eventbridge/filter/ValidateFilter.java | 8 +++- 4 files changed, 80 insertions(+), 1 deletion(-) diff --git a/docs/cn/RocketMQEventBridgeDatabaseUsage.md b/docs/cn/RocketMQEventBridgeDatabaseUsage.md new file mode 100644 index 0000000..99e7bf8 --- /dev/null +++ b/docs/cn/RocketMQEventBridgeDatabaseUsage.md @@ -0,0 +1,29 @@ +## Apache RocketMQ EventBridge 数据库依赖介绍与使用 + +RocketMQ EventBridge 使用数据库存储运行过程中定义的规则 + + +数据库: +* 内置数据库h2,主要方便进行本地测试和快速开始 +* mysql数据库,实际生产部署时可以使用 + +### 内置数据库 +```properties +# 是否开启本地页面访问 +spring.profiles.active=local +# h2 sql migration所在目录 +spring.flyway.locations=classpath:db/h2-migration +``` +本地运行后,访问h2数据库。访问url: localhost:8083: + + +### mysql数据库 +```properties +## database +spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/eventBridge?useUnicode=true&characterEncoding=utf8&useSSL=false +spring.datasource.hikari.driver-class-name=com.mysql.jdbc.Driver +spring.datasource.hikari.username=xxxxx +spring.datasource.hikari.password=xxxxx +# 注释h2使用的sql migration +#spring.flyway.locations=classpath:db/h2-migration +``` \ No newline at end of file diff --git a/docs/cn/RocketMQEventBridgeRuleValidation.md b/docs/cn/RocketMQEventBridgeRuleValidation.md new file mode 100644 index 0000000..9f1f402 --- /dev/null +++ b/docs/cn/RocketMQEventBridgeRuleValidation.md @@ -0,0 +1,44 @@ +## Apache RocketMQ EventBridge 参数规则验证 + +RocketMQ EventBridge 如何扩展参数验证 + + +### 引入依赖包 +```xml +<dependency> + <groupId>org.apache.rocketmq</groupId> + <artifactId>rocketmq-eventbridge-infrastructure</artifactId> + <version>1.0.0</version> +</dependency> +``` + +### 如何进行扩展 +``` +public class XXXXAuthValidation implements AuthValidation { + + @Override + public Context validate(ServerHttpRequest request, Context ctx) { + ... + return ctx.put(keyxxx, valxxxx); + } + + @Override + public String getType() { + return "验证器名称"; + } +} +``` + +### resources目录下增加spi配置 +```text +/resources/ +|——META-INF +| |——services +| |——org.apache.rocketmq.eventbridge.infrastructure.validate.AuthValidation +| org.apache.rocketmq.eventbridge.infrastructure.validate.XXXXAuthValidation +``` + +### 配置 +```properties +auth.validation=验证器名称(如有多个以逗号分割) +``` diff --git a/docs/cn/images/h2.png b/docs/cn/images/h2.png new file mode 100644 index 0000000..109964e Binary files /dev/null and b/docs/cn/images/h2.png differ diff --git a/start/src/main/java/org/apache/rocketmq/eventbridge/filter/ValidateFilter.java b/start/src/main/java/org/apache/rocketmq/eventbridge/filter/ValidateFilter.java index 5d80328..e6f81c2 100644 --- a/start/src/main/java/org/apache/rocketmq/eventbridge/filter/ValidateFilter.java +++ b/start/src/main/java/org/apache/rocketmq/eventbridge/filter/ValidateFilter.java @@ -34,6 +34,7 @@ import java.util.Arrays; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; @Component @Order(value = 3) @@ -47,7 +48,12 @@ public class ValidateFilter implements WebFilter { @PostConstruct public void init() { - Arrays.stream(validationName.split(",")).forEach(action->validations.add(ValidationServiceFactory.getInstance(action))); + List<String> validationNames = Arrays.stream(validationName.split(",")).collect(Collectors.toList()); + boolean match = Arrays.stream(validationName.split(",")).allMatch(validationName-> validationName.equals("default")); + if (!match) { + validationNames.add(0, "default"); + } + validationNames.forEach(action->validations.add(ValidationServiceFactory.getInstance(action))); } @Override
