Mendix 9 スポットライト: タスク キュー | Mendix

メインコンテンツへスキップ

Mendix 9 スポットライト: タスクキュー

Mendix 9リリースグラフィック

自律的AI Mendix 9では、 タスクキュー マイクロフローまたは Java アクションを分散方式で非同期的に実行できるようにします。この機能により、同期やタスク管理を気にすることなく、高性能なステートレス アプリを構築できます。

この記事では、タスクキューについて、また廃止されたプロセスキューモジュールとの違いについて詳しく説明したいと思います。また、 マルセル・グローネウェグ Mendix ITvisors の専門家兼 MVP が、タスク キューの最初の使用体験について私たちと共有してくれました。

タスクキューとは何ですか?

タスク キューは、水平方向にスケーラブルなキューイング ソリューションであり、アプリの信頼性とパフォーマンスを向上させるのに役立ちます。長時間実行されるタスクをバックグラウンドで実行してユーザーを待たせないようにしたり、複数のランタイム インスタンスに負荷を分散したり、複数のキューを使用してリソースを最適に割り当てることができます。

タスクキューは、通常、トランザクションの量が多い場合、タスクに時間がかかる場合、または 信頼性が鍵すべてのノードはキューに入れられたタスクを取得できるため、水平スケーリングのオプションがツールボックスに効果的に追加されます。実行中に失敗したノードによって取得されたタスクは再度取得されるため、単一のノードが成功することへの依存度が低くなります。スケジュールされたイベントからのタスクもキューに入れることができるため、スケジュールされたイベントが単一のノードに依存することを回避し、タスクのバッチが常に実行されるようにすることができます。

素晴らしいですね。どうやって始めればいいですか?

タスクキューの使用を開始するのは簡単です。Studio Proで新しいタスクキューを追加した後、 マイクロフローを呼び出す マイクロフローをバックグラウンドで実行するようにアクティビティを設定します。タスクをキューに入れた後、ランタイムインスタンスの1つによって処理のために取得されます。最後に、 処理済みキュータスク 成功状態のテーブル。これに基づいてさらにロジックを実装できます。

タスクキューのスクリーンショット Mendix 9
これは私たちのやり方です。

次に例を示します。

管理者がデータベース内の請求書のリストから PDF および Word ドキュメントを生成する場合を考えてみましょう。ユーザーはボタンを押してマイクロフローをトリガーし、ループでサブマイクロフローを呼び出してファイルを生成します。タスク キューがない場合、アクションが完了するまでページに読み込みバーが表示され、その間ユーザーはアプリを操作できなくなります。

これを改善するには、サブマイクロフローをタスクキューを通じて実行するように指定できます。すべてのノードがドキュメントの生成を支援できるようになったため、ユーザーはより速く結果を取得できるようになり、ファイルがバックグラウンドで生成されている間もブロックされなくなります。

タスク キューのアニメーション GIF
俳優たちが舞台で輝けるように、背景の作業もすべて行います。

プロセスキューとの比較

タスクキューと廃止されたタスクキューにはいくつかの違いがあります。 プロセスキュー モジュール:

  1. タスクキューは、 Mendix したがって、追加のエンティティと関連付けを設定する必要がなくなり、ドメイン モデルの複雑さが軽減されます。
  2. それがいいと思ったら、タスク キューは水平スケーリングも可能にし、マルチインスタンス環境に最適なソリューションになります。
  3. 今後、タスク キューはタスクの自動再試行をサポートする予定です。これは今年後半のロードマップに含まれています。

タスクキューの経験

それはそれでいいのですが、タスクキューは実際のシナリオではどのように機能するのでしょうか。 マルセル・グローネウェグ、認定 Mendix 専門家 ITvisors and Mendix すでにタスクキューを扱った経験のあるMVP Mendix 9.

Q: タスク キューで何をしましたか?

A: 以前はプロセス キューから実行されていた長時間実行されるバックグラウンド プロセスの一部を置き換えました。これらのバックグラウンド プロセスは、外部システムからデータを収集して処理します。また、画像のダウンロードにもキューを使用しています。各画像は個別のタスクであるため、1 つのダウンロードの失敗によって他のすべてのダウンロードが中断されることはなく、トランザクション サイズも小さく抑えられます。

Q: これまでのところ、どうですか?

A: 使いやすく、モデル内でこれを構成できるのが本当に便利です。アプリ自体の構成ページでの展開後の構成は不要になります。

Q: プロセス キュー モジュールからの移行はどうでしたか?

A: 本当に簡単です。1 つ以上のキューを設定し、マイクロフロー パラメータを変更し (プロセス キューに関連する追加のエンティティを削除)、呼び出しマイクロフローのプロセス キュー ロジックを単一のマイクロフロー呼び出しアクティビティに置き換えるだけです。

Q: この移行に向けてどのような準備をしましたか?

A: モデル内の Process Queue モジュールを右クリックして [使用状況を検索] を選択すると、影響は簡単に判断できます。バックグラウンド タスクごとに、エンティティから ProcessQueue.QueuedAction へのモジュール間の関連付けが存在するため、これらをクリーンアップする必要があります。残っているのは、構成とプロジェクト セキュリティ設定の ProcessQueue.Process エンティティへの参照ですが、これも削除できます。

Q: 将来に向けて何か提案はありますか?

A: クラスター全体の制限 (一度に 1 つのタスクのみ実行) と、指数関数的な再試行間隔による自動再試行があれば便利です。さらに、Java アクションでタスクをスケジュールするときに識別子が返され、追跡できるようになると便利です。最後に、実行の遅延または特定の時間を設定できると非常に便利です。

ここから始める

このブログでは、マイクロフローを非同期に実行するための水平スケーラブルなソリューションであるタスクキューの機能について説明しました。 Mendix 9 そして、ぜひあなたの経験を私たちと共有してください。

言語を選択してください