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)