問題タブ [spring-jms]
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.
spring - Spring-JMS DefaultMessageListenerContainer cacheLevelName CACHE_NONE を使用した接続失敗
Spring-JMS DefaultMessageListenerContainer 実装を変更して CACHE_NONE の cacheLevelName を使用すると、以下の例外が発生しました。変更の概要はこちら. Glassfish v 2.1、Open MQ 4.4、および Spring 3.* を使用しています。私が間違っていた可能性のある場所についてのアイデアはありますか?
ウェブアプリのログ:
[#|2012-05-16T21:18:12.620+0000|SEVERE|sun-appserver9.1|javax.resourceadapter.mqjmsra.outbound.connection|_ThreadID=284;_ThreadName=updateJmsContainer-90;_RequestID=3aa71c9e-3ac0-4142 -b914-ffbdc6e6bb37;|MQJMSRA_MC4001: constructor:Aborting:JMSException on createConnection=[C4000]: パケットの確認に失敗しました。ユーザー=管理者、ブローカー=localhost:45088(55601)|#]
2012-05-16 21:18:17,636 [updateJmsContainer-90] 警告 org.springframework.jms.listener.DefaultMessageListenerContainer - JMS メッセージ リスナー インボーカーのセットアップが宛先 'TestQ' で失敗しました - 回復しようとしています。原因: MQRA:CFA:割り当て失敗:createConnection:接続の割り当てエラー。原因: MQJMSRA_MC4001: constructor:Aborting:JMSException on createConnection=[C4000]: パケット確認に失敗しました。ユーザー=管理者、ブローカー=localhost:45088(55601)
ブローカー ログ ファイル:
spring - Spring JavaMailSender: 非同期化および永続化
Spring の JavaMailSender に永続性を追加し、非同期で動作させる簡単で軽量な方法はありますか? Spring はこれに対して「組み込み」サポートを提供しますか? 私は現在、JMS を使用したキューを調べていますが、目前のタスクにはやり過ぎのようです (ActiveMQ と RabbitMQ を見てください)。軽量の JMS オプションはありますか?
ibm-mq - MQ の選択的デキューの速度がひどい場合がある
JMSTemplate
JMS ヘッダー値に基づいて MQ キューから選択的にデキューするために使用するプロセスがあります。
デキュー クエリがキューの先頭にあるメッセージと一致する場合、デキュー レートは約 60 ~ 70 メッセージ/秒です。ただし、クエリが 50、100、または 200 メッセージの深さのメッセージのみに一致する場合、デキュー レートは 1 メッセージ / 3 ~ 4 秒に低下します。
高速デキュー クエリはThreadId='24' or ThreadId='PRIMARY'
. 遅いデキュー クエリはThreadId='24'
.
処理時間が遅い本当の理由は別の理由かもしれませんが、処理時間の変化は、選択解除クエリの変化にすぎません。
この処理速度は異常だと思います。何がうまくいかない可能性がありますか?
spring - DefaultMessageListenerContainerを使用してトピックからメッセージを失う
DefaultMessageListenerContainerを使用して、トピックからのメッセージを消費しています(ブローカーはActiveMQです)。コンシューマーは実行時に作成されるため、次のことを行っています。
1)春に設定されたConainerテンプレートがあります
2)新しいコンシューマーが必要な場合は、アプリケーションconextから新しいコンシューマーを取得し、destinationNameを再構成します。
残念ながら、コンテナはトピックに関するいくつかのメッセージを見逃しています。誰かが私が間違っていることを知っていますか?
java - 何千ものトピックに対応する高パフォーマンスの DefaultMessageListenerContainer 構成
私の現在のプロジェクトでは、多くの宛先 (数百から 20 または 30k まで) からのメッセージを消費する必要があります。すべての宛先はトピックです。現在(初期負荷テストの場合)、すべてのメッセージは同じサーバーのスレッド プールにローカルに作成されます。
私の現在の春の設定は、共通の TaskExecutor を持つブローカー (クラスタリング用) と DefaultMessageListenerContainers (DMLC) のネットワークに埋め込まれた activemq を使用します。宛先の数は非常に多くなりますが、各宛先のスループットは比較的低くなります。
私の唯一の要件は、すべてのメッセージができるだけ早く消費されることです。
私の設定:
私のコードはアプリケーション コンテキストを DMLC-Factory として使用し、コンテナーの最終的な構成を設定します。
この構成ではメッセージが失われることはありませんが、個々のメッセージの移行時間は非常に長くなる可能性があります。
Q1:多数の目的地を聞くためのより効率的な方法はありますか?
Q2:リスナーの構成を改善できる可能性はありますか?
Q3: DMLC のほかに、SimpleMessageListenerContainer も試しましたが、機能しませんでした。私の設定に何か問題がありますか?
jndi - WMQ にアクセスする WAS 8 の Spring JMS クライアントが DetailedInvalidDestinationException をスローする
リモートマシン(ホストB)のWMQ 7.0のキューにアクセスするspring-jmsクライアントを使用して、Websphere AS 8.0(ホストA)にWebアプリケーションをデプロイしました。WAS 8 管理ガイドの指示に従って、メッセージング プロバイダーとして WMQ を含む [リソース] リンクの下の JMS プロバイダーを使用して、JNDI で WMQ ConnectionFactory と WMQ キューを構成しました。また、テスト接続ボタンを使用してテストしました。それは正常に動作します。Spring JMS 構成に従って、JNDI テンプレートと QueueConnectionFactory および Queue(Destination)、DestinationResolver および JMSTemplate を構成しました。
ただし、サーバーを実行して JNDI を介して WMQ にアクセスしようとすると、次の例外がスローされます。
デフォルトの宛先名を出力しようとすると、queue://QM_MGR/Q1 として出力されました。ここで、QM_MGR はキュー マネージャーの名前で、Q1 は WMQ のキューの名前です。
WMQ で JNDI を構成していないこと、JNDI テンプレートで InitialContextFactory と Provider URL を構成していないこと、および web.xml で resource-ref を構成していないことに注意してください。
上記のすべてを試しましたが、失敗しました。そのため、上記の構成を削除しました。
なぜこの例外が発生するのか、何が欠けているのか、またはこの例外を回避するための手順を詳しく説明してくれる人はいますか? 前もって感謝します。
spring - Spring MDP スレッドセーフなリソース プーリング
EJB2.0 からの Spring 移行に取り組んでいます。既存の MessageListener では、JAXB オブジェクトなどの初期段階でリフレクションと複雑な操作を使用するため、いくつかの重いオブジェクトをキャッシュしました。たとえば、リスナーの最大サイズは 100 です。EJB リスナーは 100 個のオブジェクトを作成するため、スレッド セーフの問題はありません。Spring 2.5 を使用しようとすると、MDP は単一のリスナー オブジェクトでマルチスレッド化されるため、リスナー クラス レベルのオブジェクトに問題があり、スレッド オブジェクトを提供できません。Spring.aop.target.CommonsPoolTargetSource と proxyFactoryBean を使用して重いインスタンスをプールしていますが、インスタンスはスレッドセーフではなく、期待を台無しにする可能性があります。私はこの問題の解決策を見つけようとしましたが、class と process() を使用できるため、いくつかの情報を得ました。リスナー クラスを実装したいのですが、jmscontainer で構成する必要がありますが、私たちのチームはこれを行う標準的な方法を望んでいます。プロジェクトは成長する可能性があり、フレームワーク パターンに従う必要があるため、何らかの標準が必要です。
メッセージを取得するメソッドとして MessageListener と onMessage を実装するクラスで、このスレッドセーフなリソース プールを解決するのを手伝ってください。ただし、スレッドセーフなリソースが必要です。過去 1 日間、この問題に取り組んでいますが、問題を把握できませんでした。
この問題を解決するための標準的な方法を提案していただきありがとうございます。
spring - ApacheCamelを使用して接続するためのアプリケーションでのJMSキュー接続の設定
Camelを使用して接続するためのクライアントのキュー接続の詳細を指定しました。applicationContext.xmlで設定しているときに、ある時点でスタックします。
クライアントは、これらのキューに接続するためにjndiNamesとキュー名の両方を提供しています。こんな感じです
POC中に、Camelを使用して接続するためのローカルキュー名を指定しました。しかし、ここでは、ラクダの構成でjndiNamesとqueueNamesの両方を使用する方法が混乱しています。
spring - SpringのapplicationContextでJMS構成をセットアップする方法は?
以下のJavaコード用にアプリケーションをセットアップするにはどうすればよいですか?
私はあちこちで多くの例を見ましたが、それらのどれも完全な全体像を示していません。
java - Spring で構成された JMS リスナーのアイドル タイムアウト
Spring で構成された JMS リスナーがあり、メッセージが数時間受信されない場合 (メッセージを受信せずにアイドル状態の場合)、その後はメッセージを選択しません。ここで何が問題になるのかを親切に説明してもらえますか。
どうもありがとう。