2012-03-06 17 views
3

私は、コンポーネントのメッセージングソリューションとしてRabbitMQを使用するシステムを構築しています。しかし、私はEJBとしてGlassFishアプリケーションサーバー上でディスクIO集中型タスクを実行するいくつかの従来のEJB Javaコードを持っています。私はそのコードを書き直したくないので、そのコードとやりとりする方法を見つけたいと思います。私はただRabbitMQ Javaクライアントを使うことができると知っていますが、どのようにメッセージ抑制に対処するのか分かりませんが、4つのタスクが同じ時間に実行されているというだけではなく、メッセージ駆動型GlassFishのBean。GlassFishのRabbitMQベースのメッセージ駆動型Bean

私が思いついた唯一の事は、PostConstructでタイマーを開始するシングルトンEJBで、そのタイマーがAMQPクライアントの受信ループをブロックすることになります。受信したAMQPメッセージをローカルのGlassFish JMSプロバイダにコピーしてMDBでポーリングすることもできますが、これを気に入らないのは、いくつかのGlassFish JMSプロバイダを監視して、状況を確認する必要があるからですRabbitMQ。

私はAMQPとJMSを相互接続する方法に関する情報を見つけるのに苦労しています。任意のアイデアが評価されます。

答えて

0

これを書いてみましょう:これは、GlassFish用のMDB互換AMQPコネクタはありません。

1

基本的に異なる概念であるため、AMQPとJMSは相互に接続できません。 AMQPは、データがワイヤ上でどのように見えるか、およびブローカが動作する方法を定義する標準です。JMSはAPIの定義です。

AMQPブローカの実装ではJMS APIを提供できますが、RabbitMQには既にこの機能が備わっていると思います。

+0

RabbitMQにはJMS機能はありません( –

+0

)。amqpブローカーは他のamqpブローカーと互換性があり、どの会社もamqp用のjms実装を提供でき、すべてのブローカー実装で機能します。ここではRabbitMQがサイトからリンクしています。http://www.lshift.net/blog/2009/03/16/openamqs-jms-client-with-rabbitmq-server – Fen

+1

そのリポジトリは存在しません。 –

関連する問題