亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Vert.x Blueprint 系列教程(二) | Vert.x Kue 教程(Web部分)

Kerr1Gan / 3358人閱讀

摘要:上部分藍(lán)圖教程中我們一起探索了如何用開發(fā)一個(gè)基于消息的應(yīng)用。對(duì)部分來說,如果看過我們之前的藍(lán)圖待辦事項(xiàng)服務(wù)開發(fā)教程的話,你應(yīng)該對(duì)這一部分非常熟悉了,因此這里我們就不詳細(xì)解釋了。有關(guān)使用實(shí)現(xiàn)的教程可參考藍(lán)圖待辦事項(xiàng)服務(wù)開發(fā)教程。

上部分藍(lán)圖教程中我們一起探索了如何用Vert.x開發(fā)一個(gè)基于消息的應(yīng)用。在這部分教程中,我們將粗略地探索一下kue-http模塊的實(shí)現(xiàn)。

Vert.x Kue REST API

kue-http模塊中只有一個(gè)類KueHttpVerticle,作為整個(gè)REST API以及UI服務(wù)的實(shí)現(xiàn)。對(duì)REST API部分來說,如果看過我們之前的 Vert.x 藍(lán)圖 | 待辦事項(xiàng)服務(wù)開發(fā)教程 的話,你應(yīng)該對(duì)這一部分非常熟悉了,因此這里我們就不詳細(xì)解釋了。有關(guān)使用Vert.x Web實(shí)現(xiàn)REST API的教程可參考 Vert.x 藍(lán)圖 | 待辦事項(xiàng)服務(wù)開發(fā)教程。

將Kue UI與Vert.x Web進(jìn)行適配

除了REST API之外,我們還給Vert.x Kue提供了一個(gè)用戶界面。我們復(fù)用了 Automattic/Kue 的用戶界面所以我們就不用寫前端代碼了(部分API有變動(dòng)的地方我已進(jìn)行了修改)。我們只需要將前端代碼與Vert.x Web適配即可。

首先,前端的代碼都屬于靜態(tài)資源,因此我們需要配置路由來允許訪問靜態(tài)資源:

router.route().handler(StaticHandler.create(root));

這樣我們就可以直接訪問靜態(tài)資源咯~

注意到Kue UI使用了Jade(最近貌似改名叫Pug了)作為模板引擎,因此我們需要一個(gè)Jade模板解析器。好在Vert.x Web提供了一個(gè)Jade模板解析的實(shí)現(xiàn): io.vertx:vertx-web-templ-jade,所以我們可以利用這個(gè)實(shí)現(xiàn)來渲染UI。首先在類中定義一個(gè)JadeTemplateEngine并在start方法中初始化:

engine = JadeTemplateEngine.create();

然后我們就可以寫一個(gè)處理器方法來根據(jù)不同的任務(wù)狀態(tài)來渲染UI:

private void render(RoutingContext context, String state) {
  final String uiPath = "webroot/views/job/list.jade"; // (1)
  String title = config().getString("kue.ui.title", "Vert.x Kue");
  kue.getAllTypes()
    .setHandler(resultHandler(context, r -> {
      context.put("state", state) // (2)
        .put("types", r)
        .put("title", title);
      engine.render(context, uiPath, res -> { // (3)
        if (res.succeeded()) {
          context.response()
            .putHeader("content-type", "text/html") // (4)
            .end(res.result());
        } else {
          context.fail(res.cause());
        }
      });
    }));
}

首先我們需要給渲染引擎指定我們前端代碼的地址 (1)。然后我們從Redis中獲取其中所有的任務(wù)類型,然后向解析器context中添加任務(wù)狀態(tài)、網(wǎng)頁標(biāo)題、任務(wù)類型等信息供渲染器渲染使用 (2)。接著我們就可以調(diào)用engine.render(context, path, handler)方法進(jìn)行渲染 (3)。如果渲染成功,我們將頁面寫入HTTP Response (4)。

現(xiàn)在我們可以利用render方法去實(shí)現(xiàn)其它的路由函數(shù)了:

private void handleUIActive(RoutingContext context) {
  render(context, "active");
}

然后我們給它綁個(gè)路由就可以了:

router.route(KUE_UI_ACTIVE).handler(this::handleUIActive);

是不是非常方便呢?不僅如此,Vert.x Web還提供了其它各種模板引擎的支持,比如 FreeMaker, Pebble 以及 Thymeleaf 3。如果感興趣的話,你可以查閱官方文檔來獲取詳細(xì)的使用指南。

展示時(shí)間!

是不是等不及要看UI長啥樣了?現(xiàn)在我們就來展示一下!首先構(gòu)建項(xiàng)目:

gradle build

kue-http需要kue-core運(yùn)行著(因?yàn)?b>kue-core里注冊了Event Bus服務(wù)),因此我們先運(yùn)行kue-core,再運(yùn)行kue-http。不要忘記運(yùn)行Redis:

redis-server
java -jar kue-core/build/libs/vertx-blueprint-kue-core.jar -cluster -ha -conf config/config.json
java -jar kue-http/build/libs/vertx-blueprint-kue-http.jar -cluster -ha -conf config/config.json

為了更好地觀察任務(wù)處理的流程,我們再運(yùn)行一個(gè)示例:

java -jar kue-example/build/libs/vertx-blueprint-kue-example.jar -cluster -ha -conf config/config.json

好啦!現(xiàn)在在瀏覽器中訪問http://localhost:8080,我們的Kue UI就呈現(xiàn)在我們眼前啦!

My Blog: 「千載弦歌,芳華如夢」 - sczyh30"s blog

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/64954.html

相關(guān)文章

  • Vert.x Blueprint 系列教程() | 開發(fā)基于消息的應(yīng)用 - Vert.x Kue

    摘要:本文章是藍(lán)圖系列的第二篇教程。這就是請求回應(yīng)模式。好多屬性我們一個(gè)一個(gè)地解釋一個(gè)序列,作為的地址任務(wù)的編號(hào)任務(wù)的類型任務(wù)攜帶的數(shù)據(jù),以類型表示任務(wù)優(yōu)先級(jí),以枚舉類型表示。默認(rèn)優(yōu)先級(jí)為正常任務(wù)的延遲時(shí)間,默認(rèn)是任務(wù)狀態(tài),以枚舉類型表示。 本文章是 Vert.x 藍(lán)圖系列 的第二篇教程。全系列: Vert.x Blueprint 系列教程(一) | 待辦事項(xiàng)服務(wù)開發(fā)教程 Vert.x B...

    elina 評(píng)論0 收藏0
  • Vert.x Blueprint 系列教程(一) | 待辦事項(xiàng)服務(wù)開發(fā)教程

    摘要:本文章是藍(lán)圖系列的第一篇教程。是事件驅(qū)動(dòng)的,同時(shí)也是非阻塞的。是一組負(fù)責(zé)分發(fā)和處理事件的線程。注意,我們絕對(duì)不能去阻塞線程,否則事件的處理過程會(huì)被阻塞,我們的應(yīng)用就失去了響應(yīng)能力。每個(gè)負(fù)責(zé)處理請求并且寫入回應(yīng)結(jié)果。 本文章是 Vert.x 藍(lán)圖系列 的第一篇教程。全系列: Vert.x Blueprint 系列教程(一) | 待辦事項(xiàng)服務(wù)開發(fā)教程 Vert.x Blueprint 系...

    frank_fun 評(píng)論0 收藏0
  • Vert.x Blueprint 系列教程(三) | Micro-Shop 微服務(wù)應(yīng)用實(shí)戰(zhàn)

    摘要:本教程是藍(lán)圖系列的第三篇教程,對(duì)應(yīng)的版本為。提供了一個(gè)服務(wù)發(fā)現(xiàn)模塊用于發(fā)布和獲取服務(wù)記錄。前端此微服務(wù)的前端部分,目前已整合至組件中。監(jiān)視儀表板用于監(jiān)視微服務(wù)系統(tǒng)的狀態(tài)以及日志統(tǒng)計(jì)數(shù)據(jù)的查看。而服務(wù)則負(fù)責(zé)發(fā)布其它服務(wù)如服務(wù)或消息源并且部署。 本文章是 Vert.x 藍(lán)圖系列 的第三篇教程。全系列: Vert.x Blueprint 系列教程(一) | 待辦事項(xiàng)服務(wù)開發(fā)教程 Vert....

    QiShare 評(píng)論0 收藏0
  • Vert.x入坑須知(4)

    摘要:主要是避免引入太多的復(fù)雜性,并且出于靈活部署的需要。以應(yīng)用為例,由于實(shí)際上是在上執(zhí)行,若它被阻塞,即導(dǎo)致后續(xù)請求全部無法得到處理。因此,最合適的做法就是對(duì)于簡單業(yè)務(wù),采用異步庫。本系列其他文章入坑須知入坑須知入坑須知 最開始覺得這個(gè)系列也就最多3篇了不起了(因?yàn)槭虏贿^三嘛),沒曾想居然迎來了第四篇! Kotlin 由于最近決定投身到區(qū)塊鏈的學(xué)習(xí)當(dāng)中的緣故,出于更好的理解它的基本概念,自...

    summerpxy 評(píng)論0 收藏0
  • 使用Vert.x構(gòu)建Web服務(wù)器和消息系統(tǒng)

    摘要:而不是開始,將服務(wù)使用多線程的請求重量級(jí)的容器。是啟動(dòng)多個(gè)輕便單線程的服務(wù)器和流量路由到他們。亮點(diǎn)應(yīng)用程序是事件驅(qū)動(dòng),異步和單線程的。通過使用事件總線傳遞消息通信。為了建立一個(gè)消息系統(tǒng),則需要獲得該事件總線。 摘要 如果你對(duì)Node.js感興趣,Vert.x可能是你的下一個(gè)大事件:一個(gè)建立在JVM上一個(gè)類似的架構(gòu)企業(yè)制度。 這一部分介紹Vert.x是通過兩個(gè)動(dòng)手的例子(基于Vert.x...

    DrizzleX 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<