これらのタスクを使用してバックエンド サーバーを開発する方法を検討しています。
- RabbitMQ 経由で到着するメッセージの処理 (処理は基本的に次のようになります。Hibernate を使用していくつかのドメイン モデル エンティティをロードし、それを実行させます)
- プラグ可能である必要があります。顧客ごとに異なるモジュールがロードされます。各顧客は個別のインスタンスです。
- これらのモジュールのいくつかは、おそらくさまざまな種類のサービスを公開する必要があります (REST、おそらく SOAP など)。
- AOPまたはその他のメカニズムを介して、ボイラープレートコード(トランザクション管理、ロギングなど)のほとんどを削除できるはずです。
いくつかの背景について。Windows サービス、Castle Windsor、NHibernate、NServiceBus、またはその他のメッセージング ソリューションを使用して、.NET でこのようなことを行いました。したがって、私は単一のモノリシック ソリューションに偏っていると言えます (これは、私が Java EE などに対して得ている衝動です)。これらすべてを実現するために、いくつかの小さなフレームワークまたはライブラリを使用することをお勧めします。それらが同じアプリケーションサーバーで実行されている限り。
私が現在検討しているオプションは次のとおりです。
- これらすべてのこと (JPA、Hibernate など) を実行できると想定される GlassFish のような Java EE アプリケーション サーバー
- Play フレームワークと RabbitMQ に接続された Akka アクター。Akka アクターはメッセージを処理し、ドメイン モデル メソッドを呼び出します。Play で開発された Web UI 用の別のアプリケーションがあります。
- ネティ
- Jetty コンテナー内の Java EE の代替としての Spring
私はJavaエコシステムを始めたばかりなので、混乱した場合はいくつかの一般的な指針と説明を使用できます...
編集:
他のオプションの追加:
- OSGi
- 軸索