問題タブ [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.
jakarta-ee - AWS Elastic Beansalk を分散メッセージ処理に使用できますか?
シンプルな Java Web アプリケーションを使用して、Spring JMS クライアントをブートストラップしてロードし、キューでメッセージをリッスンして受信メッセージを処理することを計画しています。私の Web アプリケーションは、JMS クライアントをロードするためだけに存在します。このアプリケーションにアクセスするユーザーはいません。
このアプリケーションを AWS Beanstalk にデプロイした場合、ジョブ キューにメッセージがロードされ、ウェブ アプリケーションの jms ジョブ リスナーが利用可能なすべてのリソース (メモリ) を使用していると仮定すると、自動的にスケーリングされますか。スレッドなど? ロードバランサーにトラフィックがない場合でも、AWS はアプリケーションの新しいインスタンスをスピンアップしますか?
spring - Spring-JMS(Websphere MQ)
Spring で以下の構成を使用しています。正常に動作していますが、パフォーマンスが低すぎます (20 メッセージで 1 分かかります)。パフォーマンスを向上させるための変更を提案してください。
私は春から
そして、私の送信者プログラムは次のとおりです。
java - クライアントが動作を停止すると、JMS に javax.jms.InvalidDestinationException が発生する
クライアントからサーバーにリクエストを送信するために JMS を使用しています。
クライアントがサーバーにリクエストを送信します。サーバーがリクエストを処理している間、サーバーが終了する前にクライアントが停止します (ネットワークの問題)。
サーバーが終了すると、クライアントに戻りますが、サーバーは要求をサーバーに送信したクライアントを認識できません。その時点で、サーバーはログ ファイルに例外を返します。
例外は次のとおりです。
私の質問は次のとおりです。この場合、何をする必要がありますか? この例外をキャッチまたは無効にすることはできますか? そして、どうすればそれを行うことができますか?
(私の英語が下手でしたらすみません。)
java - キューの永続性をテストしようとしています。コンシューマーのブレークポイント時にメッセージを送信できません
ActiveMQのキューの永続性をテストしようとしています。
固有のコンシューマーを備えた組み込みのActiveMQサーバーがあります。この組み込みサーバーは、他の多くのJVMアプリケーションからJMSメッセージを受信します。
正常に動作し、コンシューマーアプリケーションが通知を受信します。
だから私はメッセージの永続性をテストしようとしました。コンシューマーのMessageListenerに(リモート)ブレークポイントを設定して、多くのメッセージをキューに入れ、ActiveMQサーバーをクラッシュさせることができるようにしました。サーバーの再起動時に、キューに入れられたすべてのメッセージを消費できるようにし、失われないようにします。
そして、私はそのテストを試しました。最初のメッセージ送信でそのブレークポイントに入りました。しかし、送信しようとするすべてのメッセージについて、プロデューサー側で次のスタックトラックを取得します。
コンシューマーがブレークポイントにあるときにプロデューサーがブロックされる理由がわかりません。
私のブローカーのURIは次のとおりです。mobilepush.activemq.broker.transport.connector.uri=tcp://0.0.0.0:61616
プロデューサーはtcpを介してブローカーに接続します。ブローカーと同じ場所にあるコンシューマーは、を介して接続しvm://localhost
ます。
私の設定はとても簡単です:
distributed-transactions - JMSを使用してマシン間でトランザクションを実行できますか?
ケース:開始:トランザクションの作成
- DBへのデータの挿入(マシンA)
- 同期JMSメッセージをキューに送信します(マシンA)
- キューからJMSメッセージを受信する(マシンB)
- DBにデータを挿入して返す(マシンB)
- (マシンA)のさらなるプロセス
終了:トランザクションをコミットします
マシンAとBのプロセスは1つのトランザクションで動作できますか。したがって、プロセスBがロールバックする場合、およびその逆の場合、プロセスAはロールバックしますか?
例はありますか?追加のサーバー/コンポーネントが必要ですか?
java - RESTFull Web サービスでの JMS の使用
Java+SpringでRest Fullサービスを開発しています。これは、モバイル アプリ (iPhone+Android) および Web アプリケーションで使用できます。
非同期で信頼性の高い電子メール メッセージをモバイル アプリや Web アプリケーションに送信するには、 JMS (Java Messasing サービス)を選択する方がよいでしょうか。それとも、JMS 以外の非同期メッセージングに適した代替手段はありますか。助けてください。
編集 :
サーバーが受信者がメッセージを受信するのを待たないように、RESTFull Web サービスで電子メール メッセージの配信を保証するだけでなく、非同期メッセージング モードを使用する電子メール メッセージを送信する必要があります。また、サーバー エンドで JMS を使用してキュー内のメッセージを発行/生成する場合、Mobile Apps は JMS キューからメッセージをどのように受け取るのでしょうか? JAVAサーバーから発行されたメッセージをiPhone/Android/PHP Webアプリケーションで受信することはできますか?
ありがとう、
アルン・クマール
java - DefaultMessageListenerContainer、リッスンするキューに関する知識
MessageListenerがリッスンしているキューをonMessageメソッド内で知る可能性はありますか?
私のSpring-config(その一部):
私のリスナークラス:
すぐに使えるソリューションはありますか?または、キュー/宛先名を取得するためのカスタムソリューションはありますか?
後続のバッチ処理でキューが必要ですか...
spring - Active MQ が大量のメッセージでメッセージのディスパッチを停止する
Spring JMS と Active MQ (5.6) でシステムを構築しています。これには、約 12 個の Spring Default Message Listener Containers (それぞれ最大 20 個の同時インスタンス) がすべて同じアクティブな mq 宛先 (キュー) に接続されています。
システムは、各ハンドラー (コンテナー) が自分自身にアドレス指定されたキューからメッセージを取得し、セレクターを使用して作業を行い、すべての作業が完了するまでメッセージをキューに戻すことによって機能します。
それぞれが 9 つの異なるハンドラーを通過する必要がある 25,000 のメッセージを送信するベンチマーク テストを行っています。
テストを実行するたびに、約 11300 のメッセージのみがすべてのハンドラーを通過しますが、アクティブな MQ はそれ以上メッセージを送信しません。
現在のテストの最後に、キューの次の統計を確認できます。 Enqueue Count: 120359 Dequeue Count: 106693 Dispatch Count: 106693 Inflight Count: 0 Queue Size: 13666
ブローカを再起動しない限り、アクティブな MQ はメッセージをディスパッチしません。
以下は私のactive-mq設定です:
そして、これはハンドラーの私の春の設定のサンプルです:
ActiveMQ のログ ファイルには、ディスパッチを停止する理由を示唆するような異常は何も表示されません。
これ以上メッセージが送信されない理由を知っている人、または問題をさらに診断するための提案がある人はいますか?
spring - SpringJmsTemplateを使用してJMSメッセージがキューに到達するのを遅らせる方法
私が理解しているように、これはキューサーバープール内のスレッドを「拘束」するため(複数のキューが構成されているため)、レシーバータイムアウトでメッセージコンシューマーをブロックしたくありません。では、カスタムスレッドなしでメッセージが送信されるのを遅らせるにはどうすればよいですか(作業はEJB 2セッションBeanによって実行されています)?それが役立つ場合は、JBossMessaging1.xがプロバイダーです。
java - Lingo JMS プロデューサが WLS JMS への自動再接続に失敗する
JMS プロバイダーとして WLS 10.3.4.0 を使用しています。私のアプリケーションには、Lingo と Spring Remoting を使用して構成されたプロデューサーとコンシューマーがあります。私の Producer はorg.logicblaze.lingo.jms.JmsProxyFactoryBean
で、私の Consumer はorg.logicblaze.lingo.jms.JmsServiceExporterMessageListener
です。WLS でプロデューサーとコンシューマーの自動再接続を有効にしました。奇妙なことに、すべてのコンシューマーは自動的に再接続しますが、プロデューサーはそうではないようです。
接続をリセットする方法javax.jms.ExceptionListener
で、を構成しようとしました。onException
ただし、WLS JMS が再び使用可能になり、プロデューサが再接続しないと、例外リスナーはトリガーされません。しかしLostServerException
、プロデューサーを使用してメッセージを送信しようとすると、複数の s が表示されます。これは、再接続について、WLS がそもそも接続ファクトリにまったく通知しなかったことを信じさせます。javax.jms.ConnectionFactory
私はnoExceptionListener
とorg.springframework.jms.connection.CachingConnectionFactory
withでplain oldを使ってみましたExceptionListener
。
関連するコードは次のとおりです。
CachingConnectionFactory
構成
Tomcat コンテナー内の複数の Web アプリケーションで使用される一般的な JNDI ルックアップ
私のプロデューサーとコンシューマーの設定:
私のビジネス ロジックの一部は、リフレクションを介して myServicecallProducer
非同期メソッドを呼び出します。
アプリケーションを維持したまま WLS JMS を再起動すると、一連のメッセージが表示されます"DefaultMessageListenerContainer - Successfully refreshed JMS Connection"
。次に、プロデューサ経由でメッセージを送信しようとすると、Tomcat ログに一連の WLS jms 例外が見つかります。
アイデアはありますか?この問題は、丸一日私に挑戦しています。
PS - 関連するコードは、Spring アプリケーション クライアントで WLS JMS を使用しようとしている場合に役立ちます。プロデューサーの自動再接続を除いて、これはエンドツーエンドで機能しています。