Mendix のローコード開発プラットフォームで RabbitMQ のデータを使ったアプリを構築
Siemens 社が開発した Mendix は、Web およびモバイルアプリケーションを迅速に開発、テスト、デプロイするためのローコードプラットフォームです。デジタルトランスフォーメーションの推進とビジネスのアジリティ向上を実現します。CData API Driver for JDBC と組み合わせることで、Mendix Studio Pro を使って RabbitMQ のデータを活用したさまざまなアプリケーションを作成できます。
CData JDBC ドライバーは、 最適化されたデータ処理機能を組み込み、リアルタイムRabbitMQ のデータと連携する際に、比類のないパフォーマンスを発揮します。複雑な SQL クエリを RabbitMQ に発行すると、ドライバーはフィルタや集計などのサポートされている SQL 操作を直接 RabbitMQ にプッシュし、サポートされていない操作(多くの場合、SQL 関数や JOIN 操作)は組み込みの SQL エンジンを使用してクライアントサイドで処理します。組み込みの動的メタデータクエリ機能により、ネイティブのデータ型を使用して RabbitMQ のデータを操作・分析できます。
この記事では、Mendix が提供する JDBC インターフェースと CData JDBC Driver for RabbitMQ を組み合わせて、RabbitMQ のデータを活用したアプリケーションを Mendix で簡単に作成する方法を紹介します。
Mendix 環境の準備
このセクションでは、先ほど紹介した Mendix Studio Pro を使用して、RabbitMQ のデータを使ったアプリを開発する方法を説明します。事前に Mendix Studio Pro をインストールしておいてください。
CData API Driver for JDBC のインストール
まず、Mendix と同じマシンに CData API Driver for JDBC をインストールします。JDBC ドライバーは以下のパスにインストールされます。
C:\Program Files\CData\CData JDBC Driver for RabbitMQ 20xx\lib\cdata.jdbc.api.jar
アプリケーションの作成
それでは、アプリの作成を始めましょう。まず、Database Connector が利用可能なアプリを作成します。
- Mendix Studio Pro を起動し、「Create New App」をクリックします。
- 「Blank Web App」オプションを選択します。
- 「Use this starting point」をクリックして続行します。
- 任意の名前でアプリを作成します。また、後で参照するために「Disk location」の情報をメモしておきましょう。
- これで新しいアプリが作成されました。
アプリケーションに Database Connector を追加
次に、作成したアプリに Database Connector モジュールを追加します。
- 右上の Marketplace ボタンをクリックします。
- Marketplace の検索セクションで Database Connector を検索し、選択します。
- Download をクリックして、最新の Database Connector をダウンロードします。
- Import Module ウィンドウで、Action として Add as a new module を選択します。
- アプリ画面に Database Connector が表示されれば、次のステップに進む準備が整いました。
Mendix Studio Pro への JDBC ドライバーの追加
この Database Connector で CData JDBC ドライバーを使用するには、JDBC ドライバーの JAR ファイルをプロジェクトに追加する必要があります。
- 先ほどメモした Mendix プロジェクトフォルダ内に「userlib」というフォルダがあります。そのフォルダに「cdata.jdbc.api.jar」と「cdata.jdbc.api.lic」の2つのファイルを配置します。
- これで、Database Connector で CData JDBC ドライバーを使用できるようになりました。
データモデルの作成
それでは、アプリを作成していきましょう。まず、Database Connector からデータを読み込み、一覧画面に表示するためのデータモデルを定義します。データを読み込む前に、データモデルを作成しておきます。
- MyFirstModule の「Domain model」に Entity を追加します。
- Entity 名とフィールド定義を入力します。
- DBeaver などのツールを使用して、CData JDBC ドライバー経由でテーブル定義情報を確認すると、データの設定を簡単に行えます。
- Entity を定義します。
JDBC URL 用の定数を作成
次に、Database Connector で使用する JDBC URL の定数を作成します。
- MyFirstModule に「Constant」を追加します。
- Add Constant ウィンドウで定数に名前を付けます。
RabbitMQ に接続するための JDBC URL を生成します。jdbc:api: で始まり、セミコロンで区切られた一連の接続文字列プロパティを続けます。
RabbitMQ Management HTTP API について
RabbitMQ は、複数のメッセージングプロトコルをサポートするオープンソースのメッセージブローカーです。RabbitMQ Management HTTP API は、RabbitMQ サーバーの管理データと監視データに HTTP 経由でアクセスする手段を提供します。この API では、仮想ホスト、エクスチェンジ、キュー、バインディング、コネクション、チャネル、コンシューマー、ユーザー、権限、ポリシー、クラスター全体の統計情報を取得できます。
HTTP API を利用するには、RabbitMQ サーバーで Management プラグインを有効化する必要があります。デフォルトでは、管理インターフェースはポート 15672 でリッスンします。
Basic 認証の設定
RabbitMQ Management HTTP API は HTTP Basic 認証を使用します。RabbitMQ 管理ユーザーのユーザー名とパスワードを指定する必要があります。
管理 API へのアクセスを有効にするには、以下のステップで進めます:
- サーバーで RabbitMQ Management プラグインが有効になっていることを確認します(rabbitmq-plugins enable rabbitmq_management)。
- 既存の管理ユーザーを使用するか、適切な管理タグ(management、policymaker、monitoring、または administrator)を持つユーザーを作成します。
- RabbitMQ Management HTTP API の完全なベース URL を控えておきます(例:http://localhost:15672)。
RabbitMQ サーバーを設定したら、以下の接続プロパティを設定して接続します:
- AuthScheme:Basic に設定します。
- URL:RabbitMQ Management HTTP API のベース URL に設定します(例:http://localhost:15672)。
- User:RabbitMQ の管理ユーザー名に設定します(例:guest)。
- Password:RabbitMQ の管理パスワードに設定します。
接続文字列の例:
Profile=C:\profiles\RabbitMQ.apip;AuthScheme=Basic;URL=http://localhost:15672;User=guest;Password=guest;
利用可能なテーブル
RabbitMQ プロファイルでは、以下のテーブルにアクセスできます:
- Overview - クラスター全体の統計情報と RabbitMQ ノードに関する情報
- Nodes - RabbitMQ クラスター内の個々のノードに関する情報
- NodeMemory - 特定のクラスターノードの詳細なメモリ使用状況の内訳
- Connections - ブローカーへのすべてのオープンな AMQP コネクションの一覧
- Channels - すべてのコネクションにわたるオープンな AMQP チャネルの一覧
- Consumers - すべてのキューに登録されたコンシューマーの一覧
- Exchanges - すべての仮想ホストで宣言されたエクスチェンジの一覧
- Queues - すべての仮想ホストで宣言されたキューの一覧
- Bindings - エクスチェンジとキュー間のすべてのバインディングの一覧
- VirtualHosts - ブローカーに設定された仮想ホストの一覧
- VhostPermissions - 特定の仮想ホスト内のユーザー権限
- Users - すべての RabbitMQ ユーザーの一覧
- Permissions - すべての仮想ホストにわたる全ユーザーの権限レコード
- TopicPermissions - 全ユーザーのトピックレベルの権限レコード
- Policies - 仮想ホスト内のキューおよびエクスチェンジに適用されたポリシーの一覧
- OperatorPolicies - 仮想ホスト内のキューに適用されたオペレーターポリシーの一覧
- Parameters - 仮想ホストごとのコンポーネントパラメータ(例:federation、shovel)の一覧
- GlobalParameters - すべての仮想ホストに適用されるグローバルパラメータの一覧
- VhostLimits - 特定の仮想ホストに設定されたリソース制限
- UserLimits - 特定のユーザーに設定されたリソース制限
- FeatureFlags - フィーチャーフラグの一覧と、ノード上での有効/無効の状態
- DeprecatedFeatures - 非推奨機能の一覧と、その使用状態
- AuthAttempts - ノードの認証試行統計
- ClusterName - RabbitMQ クラスターの名前
- WhoAmI - 現在認証されている管理ユーザーに関する情報
- ExchangeBindingsSource - 特定のエクスチェンジがソースとなっているバインディング
- ExchangeBindingsDestination - 特定のエクスチェンジが宛先となっているバインディング
- QueueBindings - 仮想ホスト内の特定のキューのバインディング
組み込みの接続文字列デザイナー
JDBC URL の構成には、RabbitMQ JDBC ドライバーに組み込まれている接続文字列デザイナーが便利です。JAR ファイルをダブルクリックするか、コマンドラインから JAR ファイルを実行してください。
java -jar cdata.jdbc.api.jar
接続プロパティに値を入力し、接続文字列をクリップボードにコピーします。
一般的な JDBC URL は以下のとおりです。
jdbc:api:Profile=C:\profiles\\RabbitMQ.apip;AuthScheme=Basic;URL=http://localhost:15672;User=guest;Password=guest;
- 前のステップでコピーした接続文字列を Default value セクションに入力し、OK をクリックします。
RabbitMQ のデータを取得するマイクロフローの作成
作成した Entity に基づいて、Database Connector からデータを取得するマイクロフローを作成しましょう。
- MyFirstModule から「Add microflow」をクリックします。
- 任意の名前でマイクロフローを作成します。
- まず、先ほど定義した Entity 用のオブジェクトを作成します。マイクロフローに「Create Object」アクションを追加します。
- Create Object ウィンドウで、Entity の「Select」ボタンをクリックします。
- 先ほど定義した Entity を選択します。
- 任意の Object name を入力し、OK をクリックします。
- 次に、Database Connector からデータを取得するために、マイクロフローに Execute Query アクションを追加します。
- Execute Query ウィンドウで各入力項目を定義します。
- 「jdbc url」には、先ほど定義した定数を指定します。
- SQL には、RabbitMQ からデータを取得するクエリを記述します。
- 今回は Username と Password は不要なので、「empty」に設定し、前のフローで作成したオブジェクトを Result object として割り当てます。List Name セクションには任意の名前を指定します。
- 最後に、マイクロフローの出力を定義します。
- End Event をダブルクリックして開き、Type ドロップダウンから「List」を選択し、先ほど定義した Entity とリンクします。次に、Execute Query の出力結果を Return value として設定します。
- これで、RabbitMQ からデータを取得するマイクロフローが完成しました。
一覧画面の作成とマイクロフローへのリンク
最後に、マイクロフローから取得した結果を表示する画面を作成しましょう。
- Toolbox メニュー内の「Home_web」をダブルクリックして開きます。
- Data containers セクションから Data grid テンプレートをドラッグ&ドロップして一覧画面に配置します。
- Data grid を配置したら、ダブルクリックして Edit Data Grid 設定画面を表示します。
- Data source タブに移動し、データソースタイプを Microflow とリンクします。
- 先ほど作成したマイクロフローを選択します。
- OK をクリックします。
- OK をクリックすると、カラムの自動検出を促すメッセージが表示されます。「Yes」をクリックして続行します。
- 次に、各 Data grid 用のコントローラーを生成するかどうかを確認するメッセージが表示されます。今回は各ロジックを設定しないので、「No」をクリックします。
- 以下のようなシンプルな Data grid 画面が作成されます。
動作確認
それでは、正しく動作するか確認しましょう。
- 「Publish」ボタンをクリックして、作成したアプリを準備します。完了したら、「View App」をクリックしてアプリを開きます。
- 以下のような RabbitMQ のデータの一覧が表示されれば成功です!RabbitMQ の API を意識することなく、ローコードで RabbitMQ と連携したアプリを作成できました。
今すぐ始めましょう
CData API Driver for JDBC の 30日間無料トライアル をダウンロードして、Mendix で RabbitMQ のデータに接続するアプリを簡単に作成してみてください。
ご質問がございましたら、サポートチーム までお気軽にお問い合わせください。