You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/05/08 09:34:37 UTC
[servicecomb-docs] branch master updated: [SCB-1874]add docs: how
to using BootListener
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-docs.git
The following commit(s) were added to refs/heads/master by this push:
new d98e328 [SCB-1874]add docs: how to using BootListener
d98e328 is described below
commit d98e328a86a516cad99534036bd7ffc2f350d061
Author: liubao <bi...@qq.com>
AuthorDate: Fri May 8 17:29:16 2020 +0800
[SCB-1874]add docs: how to using BootListener
---
.../zh_CN/docs/build-provider/catalog.md | 1 +
.../zh_CN/docs/build-provider/event-listener.md | 44 ++++++++++++++++++++++
java-chassis-reference/zh_CN/docs/toc.md | 1 +
3 files changed, 46 insertions(+)
diff --git a/java-chassis-reference/zh_CN/docs/build-provider/catalog.md b/java-chassis-reference/zh_CN/docs/build-provider/catalog.md
index 3892300..04c02e0 100644
--- a/java-chassis-reference/zh_CN/docs/build-provider/catalog.md
+++ b/java-chassis-reference/zh_CN/docs/build-provider/catalog.md
@@ -10,6 +10,7 @@
* [接口定义和数据类型](interface-constraints.md)
* [服务监听地址和发布地址](listen-address-and-publish-address.md)
* [线程池](thread-pool.md)
+* [服务启动事件](event-listener.md)
* 服务配置
* [限流策略](configuration/ratelimite-strategy.md)
* [参数效验](configuration/parameter-validator.md)
diff --git a/java-chassis-reference/zh_CN/docs/build-provider/event-listener.md b/java-chassis-reference/zh_CN/docs/build-provider/event-listener.md
new file mode 100644
index 0000000..0fc0d37
--- /dev/null
+++ b/java-chassis-reference/zh_CN/docs/build-provider/event-listener.md
@@ -0,0 +1,44 @@
+# 服务启动事件
+
+java chassis 启动过程中,会广播事件。 业务可以在服务启动的不同阶段执行一些初始化逻辑。 事件类型在 `BootListener`
+里面定义:
+
+```java
+public interface BootListener {
+ enum EventType {
+ BEFORE_HANDLER,
+ AFTER_HANDLER,
+ BEFORE_PRODUCER_PROVIDER,
+ AFTER_PRODUCER_PROVIDER,
+ BEFORE_CONSUMER_PROVIDER,
+ AFTER_CONSUMER_PROVIDER,
+ BEFORE_TRANSPORT,
+ AFTER_TRANSPORT,
+ BEFORE_REGISTRY,
+ AFTER_REGISTRY,
+ BEFORE_CLOSE,
+ AFTER_CLOSE
+ }
+}
+```
+
+自定义事件处理器只需要实现 `BootListener` 的接口,并且声明为 `Component` 即可。
+
+```java
+@Component
+public class AuthHandlerBoot implements BootListener {
+ @Override
+ public void onBootEvent(BootEvent event) {
+ if (EventType.BEFORE_REGISTRY.equals(event.getEventType())) {
+ RSAKeyPairEntry rsaKeyPairEntry = RSAUtils.generateRSAKeyPair();
+ RSAKeypair4Auth.INSTANCE.setPrivateKey(rsaKeyPairEntry.getPrivateKey());
+ RSAKeypair4Auth.INSTANCE.setPublicKey(rsaKeyPairEntry.getPublicKey());
+ RSAKeypair4Auth.INSTANCE.setPublicKeyEncoded(rsaKeyPairEntry.getPublicKeyEncoded());
+ RegistryUtils.getMicroserviceInstance().getProperties().put(Const.INSTANCE_PUBKEY_PRO,
+ rsaKeyPairEntry.getPublicKeyEncoded());
+ }
+ }
+}
+```
+
+比如,通过事件处理器,可以在服务注册完成或者服务注册之前进行一些初始化操作。
diff --git a/java-chassis-reference/zh_CN/docs/toc.md b/java-chassis-reference/zh_CN/docs/toc.md
index 2111b44..5c15244 100644
--- a/java-chassis-reference/zh_CN/docs/toc.md
+++ b/java-chassis-reference/zh_CN/docs/toc.md
@@ -26,6 +26,7 @@
* [接口定义和数据类型](build-provider/interface-constraints.md)
* [服务监听地址和发布地址](build-provider/listen-address-and-publish-address.md)
* [线程池](build-provider/thread-pool.md)
+ * [服务启动事件](build-provider/event-listener.md)
* 服务配置
* [限流策略](build-provider/configuration/ratelimite-strategy.md)
* [参数效验](build-provider/configuration/parameter-validator.md)