CodeZine(コードジン)

特集ページ一覧

Vert.xのモジュールの構造と仕組み

Javaプログラマーのための実践「Vert.x」 第2回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

 前回はVert.xのモジュールの開発環境を作成し、簡単に動作を確認してみました。今回は、Vert.xの構造、仕組みについて前回よりも深めに説明してみたいと思います。

目次

nettyとhazalcast

 Vert.xのベースとなるライブラリとして、nettyとhazelcastが使われています。

 nettyについては日本でもよく利用されているライブラリなので説明を割愛しますが、Vert.xの非同期IOの処理において、密接に依存する関係で利用されています。

 hazelcastの方はなかなか知られていないと思いますが、インメモリーデータグリッドと呼ばれるメモリー上で分散処理を行うための高性能なライブラリです。商用製品だとOracleのCoherenceがよく知られているかと思います。

 Vert.xでは、hazelcastの一部の機能を利用してEventBusをクラスター化し、ネットワーク上での分散処理を可能にするために利用しています。Vert.x内部で隠蔽されているため、利用するユーザーはとくに意識する必要はありません。

モジュールの構成

 モジュールに含まれる要素として必須なものが2つあります。

org.vertx.java.platform.Verticleインターフェースの実装クラス

 モジュールのmainともなるインターフェースです。Vert.x起動時にデプロイされ、そのstart()メソッドがコールされることで初期化、起動が行われます。モジュール内には複数のVerticleを含めることができます。

mod.json

 モジュールごとの起動設定を記述する設定ファイルです。"main"をキーとしてモジュールの最初に起動されるVerticle実装クラスを指定する必要があります。

 その他の項目は、公式サイトのマニュアルを参照してください。templateのsrc/main/resources/mod.json を見てみると、各言語ごとに"main"の記述例があります。

{
  // Java verticle
  "main":"com.mycompany.myproject.PingVerticle",

  // In this example we also provide various other versions of the main verticle, you can uncomment this and
  // play around:

  // Java *source* verticle
  //"main":"JavaSourcePingVerticle.java",

  // Compiled Groovy verticle - note that they must be prefixed with 'groovy:' to distinguish them from compiled Java verticles
  //"main":"groovy:com.mycompany.myproject.GroovyPingVerticle",

  // Groovy *script* verticle
  //"main": "GroovyVerticle.groovy",

  // Ruby verticle
  //"main":"ping_verticle.rb",

  // JavaScript verticle
  //"main": "ping_verticle.js",

  // Python verticle
  //"main": "ping_verticle.py",

  // If your module is going to be registered in the Vert.x module registry you will also need the following
  // mandatory fields
  "description":"Put description of your module here",
  "licenses": ["The Apache Software License Version 2.0"],
  "author": "Joe Bloggs",

  // Optional fields
  "developers": ["Other Dev 1", "Other Dev 2"],
  "keywords": ["gerbils", "cars", "cheese", "chocolate", "underpants", "herring"],
  "homepage": "url to your project page",
  "auto-redeploy": true
}

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • リョウジ(株式会社DMM.comラボ)(リョウジ)

    DMM.comのプラットフォームにおける主要アーキテクチャに関しての技術研究開発を担当。 非同期のメッセージ&キューの導入、Vert.xフレームワークを採用し社内の基盤を整備等、 高負荷対策・可用性の高いアーキテクチャの開発・設計など幅広く活躍。

バックナンバー

連載:Javaプログラマーのための実践「Vert.x」
All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5