私はかなりJavaを使い慣れていませんし、現在多くのDropwizardベースのマイクロサービスとJava8 SEを使用してWebアプリケーションを作成しています。サービス間で非同期通信用のMessage Queueを統合し、Amazon SQSのようなクラウドベースのキューを使用して開始したいと考えています。しかし、私は自分自身を特定のクラウドプロバイダーに入れたくないので、別のプロバイダーに簡単に切り替えるか、後でRabbitMQやActiveMQのようなものを使うのが好きです。だから私の質問は、これを可能にするJavaのフレームワークはありますか?たとえば、Hibernateでは単純なコンフィグレーションの変更でデータベースを切り替えることができます。メッセージキューには同等の機能がありますか?Java Message Queue抽象化
私はこれを研究するのにかなりの時間を費やしましたが、これまでどこでも決定的な回答を見つけることができませんでした。少し私が後だもののように見えますが、唯一のJava EE版で利用できるようにすると、必要とアプリサーバも見えます
- JMS、?あれは正しいですか?
- AMQPメッセージキューの相互運用性のための低レベルプロトコルのように見えます。純粋なAMQPメッセージライブラリのように見えるApache Qpid Protonもありますが、JavaのすべてのドキュメンテーションとサンプルはJMSを使用しているようです。
- 特定のMQ(Rabbitなど)で見つけられるすべてのチュートリアルでは、キュー固有のクライアントライブラリを使用しています。
- 明らかに私自身の抽象化レイヤーを追加することはできますが、ホイールを再作成したくないので、私はこのようなことをしたい最初の開発者ではないと思います。
ありがとう、JMSはJava EEでのみ利用できますか? Java SEで使用する場所はありませんか?私の問題は、Java EEはJava 7でのみ利用可能であり、私は既にJava 8の多くの機能を自分のコードで使用していたので、Java 7への切り替えには多くのリファクタリングが必要です! –
もちろん、Java SEで使用することもできます。プロジェクトパスにjavax.jmsなどの必要なjarファイルをインクルードするだけです。あなたはそれを直接行うことも、mavenのようなツールを使って行うこともできます。 – Vaaith