<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      keycloak~擴展事件機制,集成kafka中間件

      對于KC的后臺或者接口的操作,當用戶,組,角色這些實體狀態發生改變時,KC會對外發布事件,而這些事件處理程序我們是可以在后臺配置的,默認繼承了jboss-logging日志事件,而我們可以在事件管理中去配置自己的事件處理程序。

      keycloak事件驅動設計模式

      事件處理程序SPI

      實現EventListenerProviderFactoryEventListenerProvider這兩個SPI即可,我們在這里可以訂閱由KC發出現的事件,針對我們感興趣的事件,去添加處理代碼。

      /**
           * 后端管理平臺事件
           *
           * @param adminEvent
           * @param b
           */
          @Override
          public void onEvent(AdminEvent adminEvent, boolean b) {
            logger.info(adminEvent.getResourceTypeAsString()))
          }
      

      總結常用的消息類型

      • 操作類型:operationType
        • 后端類型
          • CREATE 新建
          • UPDATE 編輯
          • DELETE 刪除
        • 后臺資源類型:resourceType
          • REALM_ROLE 域的角色
          • REALM_ROLE_MAPPING 域的角色綁定
          • USER 用戶
          • GROUP 組
          • GROUP_MEMBERSHIP 組綁定
          • CLIENT_ROLE 客戶端角色
          • CLIENT_ROLE_MAPPING 客戶端角色綁定
        • 前端類型
          • LOGIN 登錄
          • LOGIN_ERROR 登錄失敗
          • REGISTER 注冊
          • REGISTER_ERROR 注冊失敗
          • LOGOUT 登出
          • LOGOUT_ERROR 登出失敗

      擴展一個KAFKA

      • 需要擴展相關組件
      <dependencies>
           <dependency>
          <groupId>org.apache.kafka</groupId>
          <artifactId>kafka-clients</artifactId>
          <version>2.6.0</version>
      </dependency>
      
      • 需要配置你的kafka的生產者
        kc這邊是一個kafka的生產者,當它收到由KC發出來的事件之后,把消息發到kafka,其它服務方可以消費這個kafka消息
      /**
       * kafka生產者.
       */
      public class Producer {
      
          private final static String BOOTSTRAP_SERVER = ConfigFactory.getInstance().getStrPropertyValue("kafka.host");
          private final static Logger logger = Logger.getLogger(Producer.class);
          private static KafkaProducer<String, String> producer;
      
          private static KafkaProducer<String, String> getProducer() {
              if (producer == null) {
                  //reset thread context
                  resetThreadContext();
                  // create the producer
                  producer = new KafkaProducer<String, String>(getProperties());
              }
              return producer;
          }
      
          public static void publishEvent(String topic, String value) {
      
              // create a producer record
              ProducerRecord<String, String> eventRecord =
                      new ProducerRecord<String, String>(topic, value);
      
              // send data - asynchronous
              getProducer().send(eventRecord, new Callback() {
                  @Override
                  public void onCompletion(RecordMetadata recordMetadata, Exception e) {
                      if (e != null) {
                          e.printStackTrace();
                      } else {
                          logger.info(String.format("The offset of the record we just sent is:%s", recordMetadata.offset()));
                      }
                  }
              });
      
          }
      
          private static void resetThreadContext() {
              Thread.currentThread().setContextClassLoader(null);
          }
      
          public static Properties getProperties() {
              Properties properties = new Properties();
              properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, BOOTSTRAP_SERVER);
              properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
              properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
              properties.setProperty(ProducerConfig.BATCH_SIZE_CONFIG, "16384");
              return properties;
          }
      
      
      }
      

      最后,在你的kc事件處理SPI里,調用咱們的KAFKA生產者去生產消息就行了

      posted @ 2021-09-06 21:06  張占嶺  閱讀(556)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日本一区二区三区后入式| 亚洲一二区制服无码中字| 精品国产一区二区三区久久女人| 武清区| 在线免费播放av观看| 久久―日本道色综合久久| 9丨精品国产高清自在线看| 邹城市| 狠狠色噜噜狠狠狠狠蜜桃| 亚洲 欧美 唯美 国产 伦 综合| 麻豆亚州无矿码专区视频| 国产尤物精品自在拍视频首页| 国内少妇人妻丰满av| 粉嫩一区二区三区精品视频| 美女无遮挡免费视频网站| 国产精品制服丝袜白丝| 国产中文字幕精品免费| 在线a久青草视频在线观看| 少妇高潮流白浆在线观看| 极品尤物被啪到呻吟喷水| 色av永久无码影院av| 97久久超碰精品视觉盛宴| 亚洲精品二区在线播放| 锡林郭勒盟| 国产午夜精品久久精品电影| 高清无码在线视频| 成年女人免费碰碰视频| 久久亚洲人成网站| 国产亚洲精品2021自在线| 亚洲欧美自偷自拍视频图片| 日韩精品中文女同在线播放| 无码一区二区三区久久精品| 高清性欧美暴力猛交| 日韩午夜福利视频在线观看| 无遮挡粉嫩小泬久久久久久久| 无码综合天天久久综合网| 精品乱人码一区二区二区| 搡老熟女老女人一区二区| 夜夜爽77777妓女免费看| 久青草国产在视频在线观看| 国产av国片精品一区二区|