You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@dubbo.apache.org by vi...@apache.org on 2018/12/26 11:04:17 UTC
[incubator-dubbo-samples] 01/02: fix hystrix issue,
edit resilience4j project
This is an automated email from the ASF dual-hosted git repository.
victory pushed a commit to branch samples-for-2.7.0-SNAPSHOT
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-samples.git
commit 7e6828b2520970a093723b8db20b908461c8786f
Author: cvictory <sh...@gmail.com>
AuthorDate: Wed Dec 26 18:56:41 2018 +0800
fix hystrix issue, edit resilience4j project
---
.../annotation/AnnotationConsumer.java | 8 ++--
.../annotation/AnnotationProvider.java | 4 +-
.../annotation/EmbeddedZooKeeper.java | 4 +-
.../annotation/action/AnnotationAction.java | 4 +-
.../annotation/api/AnnotationService.java | 2 +-
.../annotation/impl/AnnotationServiceImpl.java | 6 +--
.../annotation/AnnotationConsumer.java | 8 ++--
.../annotation/AnnotationProvider.java | 4 +-
.../annotation/EmbeddedZooKeeper.java | 4 +-
.../annotation/ZKTools.java | 2 +-
.../annotation/action/AnnotationAction.java | 4 +-
.../annotation/api/AnnotationService.java | 2 +-
.../annotation/impl/AnnotationServiceImpl.java | 4 +-
.../hystrix/annotation/AnnotationConsumer.java | 4 +-
.../hystrix/annotation/AnnotationProvider.java | 2 +-
.../hystrix/annotation/EmbeddedZooKeeper.java | 4 +-
.../dubbo/samples/hystrix/annotation/ZKTools.java | 2 +-
.../annotation/action/AnnotationAction.java | 4 +-
.../hystrix/annotation/api/AnnotationService.java | 2 +-
.../annotation/impl/AnnotationServiceImpl.java | 4 +-
dubbo-samples-resilience4j/README.md | 4 +-
.../dubbo-samples-resilience4j-filter/README.md | 4 +-
.../dubbo-samples-resilience4j-filter/pom.xml | 5 ++
.../samples/resilience4j/EmbeddedZooKeeper.java | 10 ++--
.../Resilience4jAnnotationConsumer.java | 6 ++-
.../Resilience4jAnnotationProvider.java | 20 ++++----
.../resilience4j/action/AnnotationAction.java | 47 ++++++++++++++++++-
.../resilience4j/api/CircuitBreakerService.java | 4 +-
.../resilience4j/api/RateLimiterService.java | 4 +-
.../filter/Resilience4jCircuitBreakerFilter.java | 22 ++++++++-
.../filter/Resilience4jRateLimiterFilter.java | 53 +++++++++++++++-------
.../resilience4j/impl/AnnotationServiceImpl.java | 4 +-
.../impl/CircuitBreakerServiceImpl.java | 10 +++-
.../resilience4j/impl/RateLimiterServiceImpl.java | 12 ++++-
.../META-INF/dubbo/org.apache.dubbo.rpc.Filter | 2 +
.../resources/spring/dubbo-consumer.properties | 9 ++--
.../resources/spring/dubbo-provider.properties | 10 ++--
.../README.md | 4 +-
.../Resilience4jBootAnnotationConsumer.java | 2 +-
.../Resilience4jBootAnnotationProvider.java | 2 +-
40 files changed, 213 insertions(+), 99 deletions(-)
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/AnnotationConsumer.java
similarity index 86%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/AnnotationConsumer.java
index ff80068..059e25d 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/AnnotationConsumer.java
@@ -17,10 +17,10 @@
*
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.simple.annotation;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.samples.annotation.action.AnnotationAction;
+import org.apache.dubbo.samples.simple.annotation.action.AnnotationAction;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@@ -41,9 +41,9 @@ public class AnnotationConsumer {
}
@Configuration
- @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.annotation.action")
+ @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.simple.annotation.action")
@PropertySource("classpath:/spring/dubbo-consumer.properties")
- @ComponentScan(value = {"org.apache.dubbo.samples.annotation.action"})
+ @ComponentScan(value = {"org.apache.dubbo.samples.simple.annotation.action"})
static public class ConsumerConfiguration {
}
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/AnnotationProvider.java
similarity index 93%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/AnnotationProvider.java
index 277beb2..4e9ef27 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/AnnotationProvider.java
@@ -17,7 +17,7 @@
*
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.simple.annotation;
import org.apache.dubbo.config.ProviderConfig;
@@ -40,7 +40,7 @@ public class AnnotationProvider {
}
@Configuration
- @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.annotation.impl")
+ @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.simple.annotation.impl")
@PropertySource("classpath:/spring/dubbo-provider.properties")
static public class ProviderConfiguration {
@Bean
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/EmbeddedZooKeeper.java
similarity index 99%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/EmbeddedZooKeeper.java
index 3d83b5b..eaab029 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/EmbeddedZooKeeper.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.simple.annotation;
import java.io.File;
import java.lang.reflect.Method;
@@ -252,4 +252,4 @@ public class EmbeddedZooKeeper implements SmartLifecycle {
}
}
-}
\ No newline at end of file
+}
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/action/AnnotationAction.java
similarity index 90%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/action/AnnotationAction.java
index 3c29006..87abc4a 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/action/AnnotationAction.java
@@ -17,10 +17,10 @@
*
*/
-package org.apache.dubbo.samples.annotation.action;
+package org.apache.dubbo.samples.simple.annotation.action;
import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.samples.annotation.api.AnnotationService;
+import org.apache.dubbo.samples.simple.annotation.api.AnnotationService;
import org.springframework.stereotype.Component;
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/api/AnnotationService.java
similarity index 94%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/api/AnnotationService.java
index 83ebe34..e4a3818 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/api/AnnotationService.java
@@ -17,7 +17,7 @@
*
*/
-package org.apache.dubbo.samples.annotation.api;
+package org.apache.dubbo.samples.simple.annotation.api;
/**
* AsyncService
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/impl/AnnotationServiceImpl.java
similarity index 89%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/impl/AnnotationServiceImpl.java
index 1a4c6d8..73b0707 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/simple/annotation/impl/AnnotationServiceImpl.java
@@ -14,10 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.samples.annotation.impl;
+package org.apache.dubbo.samples.simple.annotation.impl;
import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.samples.annotation.api.AnnotationService;
+import org.apache.dubbo.samples.simple.annotation.api.AnnotationService;
/**
*
@@ -31,4 +31,4 @@ public class AnnotationServiceImpl implements AnnotationService {
return "annotation: hello, " + name;
}
-}
\ No newline at end of file
+}
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/AnnotationConsumer.java
similarity index 84%
rename from dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java
rename to dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/AnnotationConsumer.java
index 0f99d52..c20420b 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/AnnotationConsumer.java
@@ -17,10 +17,10 @@
*
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.configcenter.annotation;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.samples.annotation.action.AnnotationAction;
+import org.apache.dubbo.samples.configcenter.annotation.action.AnnotationAction;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
@@ -42,9 +42,9 @@ public class AnnotationConsumer {
}
@Configuration
- @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.annotation.action", multipleConfig = true)
+ @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.configcenter.annotation.action", multipleConfig = true)
@PropertySource("classpath:/spring/dubbo-consumer.properties")
- @ComponentScan(value = {"org.apache.dubbo.samples.annotation.action"})
+ @ComponentScan(value = {"org.apache.dubbo.samples.configcenter.annotation.action"})
static public class ConsumerConfiguration {
}
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/AnnotationProvider.java
similarity index 92%
rename from dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java
rename to dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/AnnotationProvider.java
index 277beb2..408858c 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/AnnotationProvider.java
@@ -17,7 +17,7 @@
*
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.configcenter.annotation;
import org.apache.dubbo.config.ProviderConfig;
@@ -40,7 +40,7 @@ public class AnnotationProvider {
}
@Configuration
- @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.annotation.impl")
+ @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.configcenter.annotation.impl")
@PropertySource("classpath:/spring/dubbo-provider.properties")
static public class ProviderConfiguration {
@Bean
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/EmbeddedZooKeeper.java
similarity index 99%
rename from dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java
rename to dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/EmbeddedZooKeeper.java
index db0819a..6a14437 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/EmbeddedZooKeeper.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.configcenter.annotation;
import org.apache.zookeeper.server.ServerConfig;
import org.apache.zookeeper.server.ZooKeeperServerMain;
@@ -247,4 +247,4 @@ public class EmbeddedZooKeeper implements SmartLifecycle {
}
}
-}
\ No newline at end of file
+}
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/ZKTools.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/ZKTools.java
similarity index 98%
rename from dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/ZKTools.java
rename to dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/ZKTools.java
index a4202da..1710bfd 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/ZKTools.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/ZKTools.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.hystrix.annotation;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/action/AnnotationAction.java
similarity index 89%
rename from dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java
rename to dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/action/AnnotationAction.java
index b8a5c3a..46a60c1 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/action/AnnotationAction.java
@@ -17,10 +17,10 @@
*
*/
-package org.apache.dubbo.samples.annotation.action;
+package org.apache.dubbo.samples.configcenter.annotation.action;
import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.samples.externalconfiguration.api.AnnotationService;
+import org.apache.dubbo.samples.configcenter.annotation.api.AnnotationService;
import org.springframework.stereotype.Component;
/**
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/api/AnnotationService.java
similarity index 93%
rename from dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java
rename to dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/api/AnnotationService.java
index 8378798..0d724eb 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/api/AnnotationService.java
@@ -17,7 +17,7 @@
*
*/
-package org.apache.dubbo.samples.externalconfiguration.api;
+package org.apache.dubbo.samples.configcenter.annotation.api;
/**
* AsyncService
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/impl/AnnotationServiceImpl.java
similarity index 89%
rename from dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java
rename to dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/impl/AnnotationServiceImpl.java
index deb5334..6e7a103 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/impl/AnnotationServiceImpl.java
@@ -17,10 +17,10 @@
*
*/
-package org.apache.dubbo.samples.annotation.impl;
+package org.apache.dubbo.samples.configcenter.annotation.impl;
import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.samples.externalconfiguration.api.AnnotationService;
+import org.apache.dubbo.samples.configcenter.annotation.api.AnnotationService;
/**
* AsyncServiceImpl
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java
index b8d1623..58a6e9c 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationConsumer.java
@@ -17,10 +17,10 @@
*
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.hystrix.annotation;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.samples.annotation.action.AnnotationAction;
+import org.apache.dubbo.samples.hystrix.annotation.action.AnnotationAction;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java
index ff9048e..1d20827 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/AnnotationProvider.java
@@ -17,7 +17,7 @@
*
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.hystrix.annotation;
import org.apache.dubbo.config.ProviderConfig;
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java
index ae388dc..64335ba 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/EmbeddedZooKeeper.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.hystrix.annotation;
import org.apache.zookeeper.server.ServerConfig;
import org.apache.zookeeper.server.ZooKeeperServerMain;
@@ -246,4 +246,4 @@ public class EmbeddedZooKeeper implements SmartLifecycle {
}
}
-}
\ No newline at end of file
+}
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/ZKTools.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/ZKTools.java
index febd018..01e4655 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/ZKTools.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/ZKTools.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.samples.annotation;
+package org.apache.dubbo.samples.hystrix.annotation;
import org.apache.dubbo.common.utils.StringUtils;
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java
index d8dc4a8..f96c885 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/action/AnnotationAction.java
@@ -17,10 +17,10 @@
*
*/
-package org.apache.dubbo.samples.annotation.action;
+package org.apache.dubbo.samples.hystrix.annotation.action;
import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.samples.externalconfiguration.api.AnnotationService;
+import org.apache.dubbo.samples.hystrix.annotation.api.AnnotationService;
import org.springframework.stereotype.Component;
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java
index 8378798..ebaeae5 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/api/AnnotationService.java
@@ -17,7 +17,7 @@
*
*/
-package org.apache.dubbo.samples.externalconfiguration.api;
+package org.apache.dubbo.samples.hystrix.annotation.api;
/**
* AsyncService
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java
index df6d8d4..ef85f11 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/hystrix/annotation/impl/AnnotationServiceImpl.java
@@ -17,10 +17,10 @@
*
*/
-package org.apache.dubbo.samples.annotation.impl;
+package org.apache.dubbo.samples.hystrix.annotation.impl;
import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.samples.externalconfiguration.api.AnnotationService;
+import org.apache.dubbo.samples.hystrix.annotation.api.AnnotationService;
/**
* AsyncServiceImpl
diff --git a/dubbo-samples-resilience4j/README.md b/dubbo-samples-resilience4j/README.md
index 12c735e..e938b7b 100644
--- a/dubbo-samples-resilience4j/README.md
+++ b/dubbo-samples-resilience4j/README.md
@@ -2,12 +2,12 @@
### Start Provider
-Run `org.apache.dubbo.samples.annotation.AnnotationProvider`
+Run `AnnotationProvider`
### Start Consumer
-Run `org.apache.dubbo.samples.annotation.AnnotationConsumer`
+Run `AnnotationConsumer`
### Result
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/README.md b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/README.md
index 12c735e..e938b7b 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/README.md
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/README.md
@@ -2,12 +2,12 @@
### Start Provider
-Run `org.apache.dubbo.samples.annotation.AnnotationProvider`
+Run `AnnotationProvider`
### Start Consumer
-Run `org.apache.dubbo.samples.annotation.AnnotationConsumer`
+Run `AnnotationConsumer`
### Result
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/pom.xml b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/pom.xml
index f7b6552..594d0dc 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/pom.xml
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/pom.xml
@@ -71,5 +71,10 @@
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>1.8.13</version>
+ </dependency>
</dependencies>
</project>
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/EmbeddedZooKeeper.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/EmbeddedZooKeeper.java
index 9c8ae8a..5bc28fa 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/EmbeddedZooKeeper.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/EmbeddedZooKeeper.java
@@ -15,11 +15,6 @@
*/
package org.apache.dubbo.samples.resilience4j;
-import java.io.File;
-import java.lang.reflect.Method;
-import java.util.Properties;
-import java.util.UUID;
-
import org.apache.zookeeper.server.ServerConfig;
import org.apache.zookeeper.server.ZooKeeperServerMain;
import org.apache.zookeeper.server.quorum.QuorumPeerConfig;
@@ -29,6 +24,11 @@ import org.springframework.context.SmartLifecycle;
import org.springframework.util.ErrorHandler;
import org.springframework.util.SocketUtils;
+import java.io.File;
+import java.lang.reflect.Method;
+import java.util.Properties;
+import java.util.UUID;
+
/**
* from: https://github.com/spring-projects/spring-xd/blob/v1.3.1.RELEASE/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/zookeeper/ZooKeeperUtils.java
*
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jAnnotationConsumer.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jAnnotationConsumer.java
index 78e63e9..3c1f5b3 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jAnnotationConsumer.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jAnnotationConsumer.java
@@ -30,7 +30,7 @@ import org.springframework.context.annotation.PropertySource;
/**
* CallbackConsumer
*/
-public class AnnotationConsumer {
+public class Resilience4jAnnotationConsumer {
public static void main(String[] args) throws Exception {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
@@ -38,11 +38,13 @@ public class AnnotationConsumer {
final AnnotationAction annotationAction = (AnnotationAction) context.getBean("annotationAction");
String hello = annotationAction.doSayHello("world");
System.err.println("result :" + hello);
+ annotationAction.sayCircuitBreaker("circuitBreaker");
+ annotationAction.sayRateLimiter("rateLimiter", "Just Happy!");
System.in.read();
}
@Configuration
- @EnableDubbo(scanBasePackages = "com.alibaba.dubbo.samples.resilience4j.action")
+ @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.resilience4j.action")
@PropertySource("classpath:/spring/dubbo-consumer.properties")
@ComponentScan(value = {"org.apache.dubbo.samples.resilience4j.action"})
@EnableAspectJAutoProxy
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jAnnotationProvider.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jAnnotationProvider.java
index 8f5311a..6b213cb 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jAnnotationProvider.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jAnnotationProvider.java
@@ -20,18 +20,15 @@
package org.apache.dubbo.samples.resilience4j;
-import org.apache.dubbo.config.ProviderConfig;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.PropertySource;
/**
* MergeProvider
*/
-public class AnnotationProvider {
+public class Resilience4jAnnotationProvider {
public static void main(String[] args) throws Exception {
new EmbeddedZooKeeper(2181, false).start();
@@ -41,16 +38,17 @@ public class AnnotationProvider {
}
@Configuration
- @EnableDubbo(scanBasePackages = "com.alibaba.dubbo.samples.resilience4j.impl")
+ @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.resilience4j.impl")
@PropertySource("classpath:/spring/dubbo-provider.properties")
// @EnableAspectJAutoProxy
static public class ProviderConfiguration {
- @Bean
- public ProviderConfig providerConfig() {
- ProviderConfig providerConfig = new ProviderConfig();
- providerConfig.setTimeout(1000);
- return providerConfig;
- }
+// @Bean
+// public ProviderConfig providerConfig() {
+// ProviderConfig providerConfig = new ProviderConfig();
+// providerConfig.setTimeout(1000);
+// providerConfig.setFilter("rateLimiter");
+// return providerConfig;
+// }
// @Bean
// public HystrixCommandAspect hystrixCommandAspect() {
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/action/AnnotationAction.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/action/AnnotationAction.java
index 785c9eb..448454e 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/action/AnnotationAction.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/action/AnnotationAction.java
@@ -23,6 +23,9 @@ import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.samples.resilience4j.api.AnnotationService;
+import org.apache.dubbo.samples.resilience4j.api.CircuitBreakerService;
+import org.apache.dubbo.samples.resilience4j.api.RateLimiterService;
+import org.springframework.beans.CachedIntrospectionResults;
import org.springframework.stereotype.Component;
/**
@@ -33,12 +36,54 @@ public class AnnotationAction {
@Reference
private AnnotationService annotationService;
+ @Reference
+ private CircuitBreakerService circuitBreakerService;
+ @Reference
+ private RateLimiterService rateLimiterService;
-// @HystrixCommand(fallbackMethod = "reliable")
public String doSayHello(String name) {
return annotationService.sayHello(name);
}
+ public void sayCircuitBreaker(String name) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ {
+ int i = 0;
+ while (true) {
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ System.out.println(circuitBreakerService.say(name + (i++)));
+ }
+ }
+ }
+ }).start();
+
+ }
+
+ public void sayRateLimiter(String name, String value) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ {
+ int i = 0;
+ while (true) {
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ System.out.println(rateLimiterService.say(name + (i++), value + i));
+ }
+ }
+ }
+ }).start();
+ }
+
public String reliable(String name) {
return "hystrix fallback value";
}
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/api/CircuitBreakerService.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/api/CircuitBreakerService.java
index 8c824ff..ae14529 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/api/CircuitBreakerService.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/api/CircuitBreakerService.java
@@ -1,7 +1,9 @@
package org.apache.dubbo.samples.resilience4j.api;
/**
- * @author cvictory ON 2018/12/26
+ * 2018/12/26
*/
public interface CircuitBreakerService {
+
+ String say(String name);
}
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/api/RateLimiterService.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/api/RateLimiterService.java
index 3383625..3c37fbf 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/api/RateLimiterService.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/api/RateLimiterService.java
@@ -1,7 +1,9 @@
package org.apache.dubbo.samples.resilience4j.api;
/**
- * @author cvictory ON 2018/12/26
+ * 2018/12/26
*/
public interface RateLimiterService {
+
+ String say(String name, String value);
}
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/filter/Resilience4jCircuitBreakerFilter.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/filter/Resilience4jCircuitBreakerFilter.java
index 7b795cf..1dcd7bc 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/filter/Resilience4jCircuitBreakerFilter.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/filter/Resilience4jCircuitBreakerFilter.java
@@ -1,3 +1,21 @@
+/*
+ *
+ * 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.apache.dubbo.samples.resilience4j.filter;
import io.github.resilience4j.circuitbreaker.CircuitBreaker;
@@ -22,11 +40,12 @@ public class Resilience4jCircuitBreakerFilter implements Filter {
.ringBufferSizeInClosedState(5)
.build();
CircuitBreakerRegistry registry = CircuitBreakerRegistry.of(config);
- circuitBreaker = registry.circuitBreaker("my");
+ circuitBreaker = registry.circuitBreaker("myCircuitBreaker");
}
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
+ System.out.println("**************** enter CircuitBreaker ****************");
long start = System.nanoTime();
try {
Result result = invoker.invoke(invocation);
@@ -34,6 +53,7 @@ public class Resilience4jCircuitBreakerFilter implements Filter {
circuitBreaker.onSuccess(durationInNanos);
return result;
} catch (Throwable throwable) {
+ System.out.println("************* CircuitBreaker! Try it later! *************");
long durationInNanos = System.nanoTime() - start;
circuitBreaker.onError(durationInNanos, throwable);
throw throwable;
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/filter/Resilience4jRateLimiterFilter.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/filter/Resilience4jRateLimiterFilter.java
index 7b795cf..81ae1fd 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/filter/Resilience4jRateLimiterFilter.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/filter/Resilience4jRateLimiterFilter.java
@@ -1,41 +1,60 @@
+/*
+ *
+ * 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.apache.dubbo.samples.resilience4j.filter;
-import io.github.resilience4j.circuitbreaker.CircuitBreaker;
-import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
-import io.github.resilience4j.circuitbreaker.CircuitBreakerRegistry;
+import io.github.resilience4j.ratelimiter.RateLimiter;
+import io.github.resilience4j.ratelimiter.RateLimiterConfig;
+import io.github.resilience4j.ratelimiter.RateLimiterRegistry;
import org.apache.dubbo.rpc.Filter;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcException;
+import java.time.Duration;
+
/**
* @author cvictory ON 2018/12/25
*/
-public class Resilience4jCircuitBreakerFilter implements Filter {
+public class Resilience4jRateLimiterFilter implements Filter {
- static CircuitBreaker circuitBreaker;
+ static RateLimiter rateLimiter;
static {
- CircuitBreakerConfig config = CircuitBreakerConfig.custom()
- .failureRateThreshold(20)
- .ringBufferSizeInClosedState(5)
+ RateLimiterConfig config = RateLimiterConfig.custom()
+ .limitRefreshPeriod(Duration.ofMillis(1000))
+ .limitForPeriod(2)
+ .timeoutDuration(Duration.ofMillis(2000))
.build();
- CircuitBreakerRegistry registry = CircuitBreakerRegistry.of(config);
- circuitBreaker = registry.circuitBreaker("my");
+
+ RateLimiterRegistry rateLimiterRegistry = RateLimiterRegistry.of(config);
+ rateLimiter = rateLimiterRegistry.rateLimiter("myRateLimiter");
}
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
- long start = System.nanoTime();
try {
- Result result = invoker.invoke(invocation);
- long durationInNanos = System.nanoTime() - start;
- circuitBreaker.onSuccess(durationInNanos);
- return result;
+ System.out.println("**************** enter RateLimiter ****************");
+ RateLimiter.waitForPermission(rateLimiter);
+ return invoker.invoke(invocation);
} catch (Throwable throwable) {
- long durationInNanos = System.nanoTime() - start;
- circuitBreaker.onError(durationInNanos, throwable);
+ System.out.println("************* Rate Limiter! Try it later! *************");
throw throwable;
}
}
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/AnnotationServiceImpl.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/AnnotationServiceImpl.java
index cc2e9f7..d2dc0ec 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/AnnotationServiceImpl.java
@@ -28,13 +28,13 @@ import org.apache.dubbo.samples.resilience4j.api.AnnotationService;
@Service
public class AnnotationServiceImpl implements AnnotationService {
-// @HystrixCommand(commandProperties = { @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
+ // @HystrixCommand(commandProperties = { @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
// @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000") })
@Override
public String sayHello(String name) {
// System.out.println("async provider received: " + name);
// return "annotation: hello, " + name;
- throw new RuntimeException("Exception to show hystrix enabled.");
+ return "Hello, " + name + "! this is annotation.";
}
}
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/CircuitBreakerServiceImpl.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/CircuitBreakerServiceImpl.java
index 29ec47f..1cb0171 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/CircuitBreakerServiceImpl.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/CircuitBreakerServiceImpl.java
@@ -1,7 +1,15 @@
package org.apache.dubbo.samples.resilience4j.impl;
+import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.samples.resilience4j.api.CircuitBreakerService;
+
/**
* @author cvictory ON 2018/12/26
*/
-public class CircuitBreakerServiceImpl {
+@Service
+public class CircuitBreakerServiceImpl implements CircuitBreakerService {
+ @Override
+ public String say(String name) {
+ throw new RuntimeException("Exception to show resilience enabled.");
+ }
}
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/RateLimiterServiceImpl.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/RateLimiterServiceImpl.java
index 32bea46..c36a07f 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/RateLimiterServiceImpl.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/RateLimiterServiceImpl.java
@@ -1,7 +1,15 @@
package org.apache.dubbo.samples.resilience4j.impl;
+import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.samples.resilience4j.api.RateLimiterService;
+
/**
- * @author cvictory ON 2018/12/26
+ * 2018/12/26
*/
-public class RateLimiterServiceImpl {
+@Service
+public class RateLimiterServiceImpl implements RateLimiterService {
+ @Override
+ public String say(String name, String value) {
+ return "Hello " + name + ", this is rateLimiter. The value is :" + value;
+ }
}
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
index e69de29..730f065 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
@@ -0,0 +1,2 @@
+circuitBreaker=org.apache.dubbo.samples.resilience4j.filter.Resilience4jCircuitBreakerFilter
+rateLimiter=org.apache.dubbo.samples.resilience4j.filter.Resilience4jRateLimiterFilter
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/spring/dubbo-consumer.properties b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/spring/dubbo-consumer.properties
index 96ab667..5ebcaad 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/spring/dubbo-consumer.properties
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/spring/dubbo-consumer.properties
@@ -6,17 +6,18 @@
# 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.
-#
+#
#
dubbo.application.name=annotation-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.consumer.timeout=3000
\ No newline at end of file
+dubbo.consumer.timeout=3000
+dubbo.consumer.filter=circuitBreaker
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/spring/dubbo-provider.properties b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/spring/dubbo-provider.properties
index 51fccca..9331899 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/spring/dubbo-provider.properties
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/resources/spring/dubbo-provider.properties
@@ -6,18 +6,20 @@
# 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.
-#
+#
#
dubbo.application.name=annotation-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
-dubbo.protocol.port=20880
\ No newline at end of file
+dubbo.protocol.port=20880
+dubbo.provider.timeout=1000
+dubbo.provider.filter=rateLimiter
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/README.md b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/README.md
index 12c735e..e938b7b 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/README.md
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/README.md
@@ -2,12 +2,12 @@
### Start Provider
-Run `org.apache.dubbo.samples.annotation.AnnotationProvider`
+Run `AnnotationProvider`
### Start Consumer
-Run `org.apache.dubbo.samples.annotation.AnnotationConsumer`
+Run `AnnotationConsumer`
### Result
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jBootAnnotationConsumer.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jBootAnnotationConsumer.java
index 78e63e9..d6ac170 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jBootAnnotationConsumer.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jBootAnnotationConsumer.java
@@ -30,7 +30,7 @@ import org.springframework.context.annotation.PropertySource;
/**
* CallbackConsumer
*/
-public class AnnotationConsumer {
+public class Resilience4jBootAnnotationConsumer {
public static void main(String[] args) throws Exception {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jBootAnnotationProvider.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jBootAnnotationProvider.java
index be7715d..c789eca 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jBootAnnotationProvider.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4j/Resilience4jBootAnnotationProvider.java
@@ -31,7 +31,7 @@ import org.springframework.context.annotation.PropertySource;
/**
* MergeProvider
*/
-public class AnnotationProvider {
+public class Resilience4jBootAnnotationProvider {
public static void main(String[] args) throws Exception {
new EmbeddedZooKeeper(2181, false).start();