<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          kaka-core服務(wù)于 Java 后端的事件領(lǐng)域模型框架

          聯(lián)合創(chuàng)作 · 2023-09-28 10:05

          kaka-core 是一項服務(wù)于 Java 后端的事件領(lǐng)域模型,全局事件通知框架。

          無任何第三方依賴,源碼中已包含使用范例;可解耦業(yè)務(wù),簡化程序復(fù)雜性,提高代碼可讀性,降低開發(fā)維護成本。

          本項目為 https://gitee.com/zkpursuit/kaka-notice-lib 核心部分,在此作為獨立軟件僅說明此次功能增強部分。

          此次更新主要強化和穩(wěn)定以下兩個功能點:

          1、單個事件對應(yīng)多個 Command,3.0版本之前僅支持一個 Command 對應(yīng)多個事件。在此基礎(chǔ)上同名事件對應(yīng)的 Command 新增執(zhí)行優(yōu)先級,可依此模擬切面編程,以下代碼為模擬切面方法攔截器,獲取主體業(yè)務(wù)執(zhí)行耗時。

          //基于事件模擬切面編程,僅支持Command
          sendMessage(new Message("40000"), true);
          package kaka.test.unit;
          
          import com.kaka.notice.Command;
          import com.kaka.notice.Message;
          import com.kaka.notice.annotation.Handler;
          
          /**
           * 模擬切面
           */
          @Handler(cmd = "40000", type = String.class, priority = 2)
          public class SimulateAopCommand extends Command {
              @Override
              public void execute(Message msg) {
                  try {
                      Thread.sleep(2000);
                  } catch (InterruptedException e) {
                      e.printStackTrace();
                  }
                  System.out.println("Aop業(yè)務(wù)執(zhí)行");
              }
          }
          package kaka.test.unit;
          
          import com.kaka.notice.Command;
          import com.kaka.notice.IResult;
          import com.kaka.notice.Message;
          import com.kaka.notice.SyncResult;
          import com.kaka.notice.annotation.Handler;
          
          /**
           * 模擬切面,執(zhí)行前
           */
          @Handler(cmd = "40000", type = String.class, priority = 1)
          public class SimulateAopBeforeCommand extends Command {
              @Override
              public void execute(Message msg) {
                  IResult execStartTime = new SyncResult<>(); //中間變量亦可使用 ThreadLocal 存儲
                  execStartTime.set(System.currentTimeMillis());
                  msg.setResult("execStartTime", execStartTime);
              }
          }
          package kaka.test.unit;
          
          import com.kaka.notice.Command;
          import com.kaka.notice.IResult;
          import com.kaka.notice.Message;
          import com.kaka.notice.annotation.Handler;
          
          /**
           * 模擬切面,執(zhí)行后
           */
          @Handler(cmd = "40000", type = String.class, priority = 3)
          public class SimulateAopAfterCommand extends Command {
              @Override
              public void execute(Message msg) {
                  IResult execStartTime = msg.getResult("execStartTime");
                  long offset = System.currentTimeMillis() - execStartTime.get();
                  System.out.println("Aop業(yè)務(wù)執(zhí)行耗時:" + offset);
              }
          }

          2、異步回調(diào)獲取事件處理結(jié)果,此功能為同步獲取事件處理結(jié)果的增強和優(yōu)化。

          sendMessage(new Message("50000", "", (IResult<Object> result) -> {
                      Class clasz = ((CallbackResult<Object>) result).eventHanderClass;
                      StringBuilder sb = new StringBuilder("異步回調(diào):\\t" + clasz.getTypeName() + "\\t");
                      Object resultObj = result.get();
                      if (resultObj instanceof Object[]) {
                          Object[] ps = (Object[]) resultObj;
                          sb.append(Arrays.toString(ps));
                      } else {
                          sb.append(resultObj);
                      }
                      System.out.println(sb);
                  }), true);

          以上范例代碼均可在源碼test中查閱,其中包括常用通用性范例。

          瀏覽 18
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲第一黄 | 日韩一级在线播放免费观看 | 麻豆九色 | 国产女主播一区 | 亚洲精品三级片 |