問題タブ [openmq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jakarta-ee - 複数のJMSメッセージをブロックで送信する方法(それぞれが新しいトランザクションで)
私のJavaEE6 Webアプリケーションは、単一のトランザクションで送信できるJMSメッセージの最大数に達しており、複数のトランザクションで送信する必要があります。トランザクションがコンテナによって管理されている場合、これを行うための最良の方法は何でしょうか?異なるトランザクション間で同じMessageProducerを使用しても大丈夫ですか(で注釈が付けられたEJBメソッドを使用@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
)
Glassfishv3とOpenMQを使用しています。
OpenMQのメッセージの最大数に関する問題は、このSOの質問 で説明されています。OpenMQのキューに送信されるメッセージの最大数は?。
connection - クラスタから imq ブローカを適切に登録解除する
現在、openmq クラスター (glassfish 3.0.1 を使用) を管理しようとしていますが、奇妙な動作に遭遇します。
クラスタは、登録された 2 つのブローカーで問題なく 7 か月間動作します。
ここで、一時的にクラスターに他の 2 つのブローカーを追加する必要があります。これが私が前に持っているものです:
次に、他の2つのサーバーで他の2つのブローカーを正常に起動し、次のようになりました:
アプリケーションは、2 つの新しいブローカーを自動的に使用して、構成で適切に実行されます。この問題は、次のコマンドを使用してクラスターからブローカーを停止すると発生します。
./imqcmd shutdown bkr
サーバーの1つに。の結果./imqcmd list bkr
は次のとおりです。
すべて問題ないようです。Broker1 によってテイクオーバーが実行されますが、グラスフィッシュの server.log を見ると、次の行が見つかりました。
[C4003]: Error occurred on connection creation [192.168.0.3:7676]. - cause: java.net.ConnectException: Connection refused|#]
グラスフィッシュがシャットダウンされたブローカーに接続しようとした場合のように。
私が逃したものはありますか?
ご協力いただきありがとうございます。
java - 複数のパブリッシャーと単一のレシーバーを使用して、OpenMQでメッセージの順序を保持できますか?
GlassFishのOpenMQを使用してログに記録したい。コンポーネントがこのキューにメッセージを配置できると考えています。単一のmdbのみがこのキューから消費する場合、キューに入れられた順序ですべてのメッセージを受信できるはずです。これは機能し、メッセージの順序をどのように維持できますか?
参考までに、プレゼンテーションにスライドがあり、 JMSが注文を提供したと私は信じていましたが、明らかに誤解を招く恐れがあります。
スライド8のトランスクリプト:
JMSとは何ですか?•メッセージ指向ミドルウェア用のJavaベースのAPI。•次の概念を使用します(とりわけ)>メッセージの順序が保証されます>メッセージの送信時に信頼性のレベルが決定されます>トランザクション(一緒に送信または生成されるメッセージのグループ化)がサポートされます>メッセージの形式はプロデューサー>2つのスタイルのメッセージ配信(ポイントツーポイントとパブリッシュ/サブスクライブ)を提供します。CopyrightSun Microsystems Inc. AllRightsReserved。[8]
http://www.slideshare.net/alexismp/openmq-aquarium-paris-presentation
以下のこれらの回答は、JMS構造が順序を保証しないことを示しています。しかし、コンテナの同時実行性を使用するシングルトンであるMDBが1つしかない場合は、少なくともエンキュー順序を楽しむことができると思います。
見る:
networking - JMS または OS が接続ドロップを認識しない理由は何ですか?
JMS を介して通信するサーバーを備えたシステムがあります。JMS への接続が失われた後、一部のサーバーが再接続できない場合があります。サーバーの再起動時に接続が失われる、ネットワークが悪い... 再接続できない理由は、「ClientID が既に使用されている」ためです。エラー。
JMS ログからの抜粋:
「接続 guest@10.0.0.106:2390 のクライアントが、既に使用されているクライアント ID ABC を使用しようとしました
競合する clientID ABC は、ローカル接続の guest@10.0.0.106:1098 によって所有されています"
すべてのサーバーには個別の clientID があります。リモート ポート 1098 の接続は、サーバー 10.0.0.106 が JMS への接続を失う前に存在していました。サーバー ABC のポート 1098 は開いていません。
問題が発生したときにTCPviewを使用してみました。ポート 1098 でのサーバーへの古い接続がまだ存在します。
2 つの質問があります。
JMS が制御パケットを存在しないリモート ポート 1098 にエラーなしで送信することは可能ですか?
OS が接続切断を認識しない理由は何ですか?
glassfish - コマンドライン管理ツールを使用してjms接続ファクトリを作成する方法は?
私はglassfishでopenmqを使用しており、現在gfWeb管理ツールを使用して接続ファクトリと宛先を作成しています。imqcmdユーティリティを使用して宛先を作成するコマンドを見つけましたが、接続ファクトリを作成できませんでした。openmqコマンドラインツールを使用してキュー接続ファクトリを作成する正しい方向を誰かに教えてもらえますか?
参考までに、ここで私が目的地を作成するために使用しているものです
imqcmd create dst -tq -n MyFavoriteQueue -u admin
glassfish - プログラムでjmsトピックとTopicConnectionFactoryを作成するにはどうすればよいですか?
プログラムでトピックとその接続ファクトリを作成できるかどうか誰かが知っていますか?現在、glassfish管理ユーティリティを使用して、トピックとその接続ファクトリを作成しています。コードで作成できない場合、glassfish / openmqにはデフォルトのトピックとconnファクトリを使用できますか?
jms - すべてのインフライト メッセージをメモリに保存しないように OpenMQ を構成するにはどうすればよいですか?
通知サービスのさまざまな JMS 実装を負荷テストしました。ActiveMQ、HornetQ、および OpenMQ のいずれも期待どおりに動作しません (信頼性とメッセージの優先順位付けの問題)。しかし、今では OpenMQ で最高の結果が得られています。おそらく設定ミスに過ぎない 2 つの問題が予想されます (希望します)。JDBC ストレージを備えたもの
テスト シナリオ:
1 つのキューを持つ 2 つのプロデューサーが、異なる優先度でメッセージを送信します。プロデューサーが生成するよりもわずかに遅い一定の速度でキューから消費する 1 つのコンシューマー。OpenMQ はスタンドアロンで実行され、PostgreSQL を永続ストレージとして使用します。すべてのメッセージは Apache Camel ルートから送信および消費され、すべて永続的です。
問題:
- 約 50000 件のメッセージの後、メモリ不足に関する警告とエラーが OpenMQ ログに表示されます (256Mb ヒープ サイズでのデフォルト設定)。プロデュースはブローカーによって抑制され、しばらくするとブローカーはディスパッチをまったく停止します。ブローカーの JVM メモリ使用量が最大になっています。
その目標を達成するためにブローカーを構成する方法:
- ブローカは、キュー サイズ (最大 1 000 000 メッセージ) とメモリ制限に依存しません。パフォーマンスは問題ではなく、信頼性のみです。
それは可能ですか?
spring - OpenMQを使用する場合のSpringJMSセッションの問題
spring-jms-3.0.6.RELEASEを使用してMQを開きます。以下の例外が発生する理由について何かアイデアはありますか?
web.xml:
testlistener-context-api.xml:
testmsg-context-api.xml:
glassfish - Glassfish - OpenMQ から SonicMQ への接続が機能しない
バージョン 3.1.2 を実行しているグラスフィッシュ インスタンスがあります。JMS 経由でリモート サーバーに接続する必要があります。リモート システムは、SonicMQ を使用していると思います。
問題なくリモートサーバーと通信できるJARの例(リモートサーバー会社から)があります。
GlassFish を正しく構成したと思いますが、リモート サーバーに接続できません。グラスフィッシュのping機能を接続/使用すると、常に同じエラーが発生します。
PortMapper がないため、ポート 12506 が正しいです。AddressList
パラメータは代わりmqtcp://remote.server.com:12506
にmq://remote.server.com:12506
解決策を半日グーグル検索しましたが、何も見つかりませんでした。誰か提案がありますか?私は何を間違っていますか?
java - onMessage() が呼び出されるとすぐに JMS 非同期メッセージ処理で、メッセージがキューから削除される
要件:onMessage()
正常に実行されるまでメッセージをキューに保持したい。の実行中に何らかの例外が発生しonMessage()
、それがハンドルされていない場合、メッセージはリスナーに再配信される必要があります。
アプリケーション サーバーとして Glassfish v2 を使用しています。OpenMQConnectionFactory と JmsTemplate を使用してメッセージをキューに送信しています。 私は MDB を使用していないことに注意してください。
応答モードとして AUTO_ACKNOWLEDGE を試しましたが、例外がスローされたメッセージが再配信されないときにリスナーで試しました。
MessageProducer.java
public void sendMessage(最終文字列 responseStream) {
サンプルJMSConsumer.java
次にthis.jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
、私が呼び出したリスナーで 試してみましたが、まだメッセージを呼び出しmessage.acknowledge();
たcatch
ブロックで再配信されません。session.recover()
サンプルJMSConsumer.java
}
プログラムをデバッグ モードで実行し、ブローカ管理コンソールのキューでメッセージを送信すると、メッセージの数を確認できますが、onMessage() が呼び出されるとすぐに、メッセージの数が 1 つ減ります。つまり、メッセージが消費され、キューから削除されます。そのメッセージは「配信済み」と見なされますか? 例外が発生したときにメッセージが再配信されない理由を理解してください。
前もって感謝します。