服务启动事件
java chassis 启动过程中,会广播事件。 业务可以在服务启动的不同阶段执行一些初始化逻辑。 事件类型在 BootListener
里面定义:
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
即可。
@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());
}
}
}
比如,通过事件处理器,可以在服务注册完成或者服务注册之前进行一些初始化操作。