問題タブ [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 - activemq-spring 接続エラーを処理する
activemq を使用して jms que をリッスンするように (Spring を使用して) アプリケーションを構成しましたが、すべて正常に動作します。私のactivemqサーバーは別のサーバーにインストールされており、時々オフラインになる可能性があり、接続エラーを処理したいと考えています。それは可能ですか?
これが私の春の構成です
spring - Springを使用したJMSリスナーの開始と停止
したがって、質問は、休閑方法を使用して春を使用して作成されたjmsリスナーを一時的に停止および開始する方法です。
だから基本的に何が問題なのか。クライアントがいつでも実行できるinit/updateメカニズムがあり、このinit / updateの間、システムはこの時点では使用できず、メッセージが届いた場合は失われるため、メッセージの消費を停止したいと思います。
では、APIを使用してリスナーまたはリスナーコンテナまたは接続全体を停止するにはどうすればよいですか。クラスAbstractJmsListeningContainerに停止/開始があることがわかりましたが、どうすれば取得できますか?つまり、このjmsはどれも意味しません。listenerとlistener-containersには、名前などがあります。
java - Java:SpringのDMLCから永続サブスクライバーのサブスクリプションを解除する方法は?
プレーンJMSでは、次のことができます。session.unsubscribe( "永続サブスクリプションの名前"); しかし、DMLCを介してどのようにそれを行うのでしょうか?この目的のための特定の方法が見つかりませんでした。
jms - ActiveMQ/JMSメッセージハンドラーテスト
これは完全にJMSキューハンドラーテストではありません。だから、読み続けてください。
スプリングチャネルがActiveMQからのキューをリッスンするアーキテクチャがあります。このキューのリスナーはメッセージを受信し、サブリスナーの静的リスト(一意のサブジェクトによって識別されます)を持っています。すべてのメッセージには、このメッセージを配信する必要のある件名を含むいくつかのパラメーターがあります。
SMSServiceは、件名がSEND_SMSのactivemqにメッセージをドロップします。HTTPサービスまたはSMPPサービスのいずれかによってリッスンされます。独自のリスナーを設計し、それを必要な「サブジェクト」を備えたスプリングコンポーネントとして配線することもできます。
問題: この内部の主題が変わる可能性が高くなります。これは、リスナーがない場合でも明示的なランタイム例外をスローしません。意図したリスナーが実際に受信しているこのメッセージをテストする方法はありますか?
`
apache-camel - CamelエンドポイントからのJMSメッセージの確認に関する問題
JMSエンドポイントにトレースしている単純なCamelアプリケーションがあります。現在、受信したJMSメッセージが確認応答されていないように見える問題が発生しています(メッセージが送信されずにキューから読み取られており、現在のキューの深さが減少していません)。
この問題の原因について何か考えはありますか?
トレースルート
SpringJMS構成
Spring EndpointConfig
編集:
これは、ブローカーとしてTibcoEMSを使用しています。
ログに表示されるのは次のとおりです。
[2012 Jul 11 11:39:46] DEBUG [](AbstractPollingMessageListenerContainer.java:313)-コンシューマー[QueueReceiver [queue=f2b.prototype.tracer.queue]からタイプ[classcom.tibco.tibjms.TibjmsObjectMessage]のメッセージを受信しました]セッションの[com.tibco.tibjms.TibjmsSession@16c143]
[2012 Jul 11 11:39:46] DEBUG [](EndpointMessageListener.java:72)-Endpoint [jmsTrace:// queue:/user_dev/db/us/GTO/CIFramework/S001DEV/f2b.prototype.tracer.queue:キュー]コンシューマーがJMSメッセージを受信しました:ObjectMessage = {Header = {JMSMessageID = {ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:3} JMSDestination = {Queue [f2b.prototype.tracer.queue]} JMSReplyTo = {null} JMSDeliveryMode = {PERSISTENT} JMSRedelivered = {false} JMSCorrelationID = {null} JMSType = {null} JMSTimestamp = {Wed Jul 11 10:53:48 CDT 2012} JMSExpiration = {0} JMSPriority={4}}プロパティ={}Object = {com.db.cif .tracer.jpa.model.JpaTraceEventMessage @1dfe3f}}
[2012 Jul 11 11:39:46] DEBUG [](JmsTemplate.java:464)-JMSセッションでコールバックを実行しています:com.tibco.tibjms.TibjmsSession@16c143
[2012 Jul 11 11:39:46] DEBUG [](JmsConfiguration.java:266)-JMSメッセージを次の宛先に送信しています:Queue [f2b.prototype.tracer.queue] with message:ObjectMessage = {Header = {JMSMessageID = {null} JMSDestination = {null} JMSReplyTo = {null} JMSDeliveryMode = {PERSISTENT} JMSRedelivered = {false} JMSCorrelationID = {null} JMSType = {null} JMSTimestamp = {0} JMSExpiration = {0} JMSPriority={4}}プロパティ={} Object ={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@16119a}}
テスト
[2012 Jul 11 11:39:52] DEBUG [](AbstractPollingMessageListenerContainer.java:313)-コンシューマー[QueueReceiver [queue=f2b.prototype.tracer.queue]からタイプ[classcom.tibco.tibjms.TibjmsObjectMessage]のメッセージを受信しました]セッションの[com.tibco.tibjms.TibjmsSession@16c143]
[2012 Jul 11 11:39:52] DEBUG [](EndpointMessageListener.java:72)-Endpoint [jmsTrace:// queue:/user_dev/db/us/GTO/CIFramework/S001DEV/f2b.prototype.tracer.queue:キュー]コンシューマーがJMSメッセージを受信しました:ObjectMessage = {Header = {JMSMessageID = {ID:db_us_GTO_CIFramework_S001DEV.20D84FDA9F769B1A97:4} JMSDestination = {Queue [f2b.prototype.tracer.queue]} JMSReplyTo = {null} JMSDeliveryMode = {PERSISTENT} JMSRedelivered = {false} JMSCorrelationID = {null} JMSType = {null} JMSTimestamp = {Wed Jul 11 10:53:50 CDT 2012} JMSExpiration = {0} JMSPriority={4}}プロパティ={}Object = {com.db.cif .tracer.jpa.model.JpaTraceEventMessage @1d81bc5}}
[2012 Jul 11 11:39:52] DEBUG [](JmsTemplate.java:464)-JMSセッションでコールバックを実行しています:com.tibco.tibjms.TibjmsSession@16c143
[2012 Jul 11 11:39:52] DEBUG [](JmsConfiguration.java:266)-JMSメッセージを次の宛先に送信しています:Queue [f2b.prototype.tracer.queue] with message:ObjectMessage = {Header = {JMSMessageID = {null} JMSDestination = {null} JMSReplyTo = {null} JMSDeliveryMode = {PERSISTENT} JMSRedelivered = {false} JMSCorrelationID = {null} JMSType = {null} JMSTimestamp = {0} JMSExpiration = {0} JMSPriority={4}}プロパティ={} Object ={com.db.cif.tracer.jpa.model.JpaTraceEventMessage@3b09b4}}
spring - 春のjmsリスナーは確認応答タイプを非自動に変更します
OK私はSpring jmsリスナーを使用しており、現在デフォルトの承認タイプを使用しています-自動なので、tiがインポート/処理される前にメッセージが消費されます。このタイプを変更して、後でこのリスナーを使用して、このメッセージがいつ処理され、削除されるかを手動で確認できるようにする方法
spring-ws - JMS での Spring 統合 Web サービス ゲートウェイの使用
spring-integration を使用して、Web サービス クライアント (およびその後は Web サービス サーバー) を実装する必要があります。スプリング統合チームから提供されたサンプルは既に使用しています。その実装では、HTTP をトランスポート層として使用します。クライアントは HTTP リクエストを作成し、サーバーは HTTP レスポンスを返信しています。HTTP を使用する代わりに、JMS をトランスポート層として使用したいと考えています。この場合、クライアントは SOAP-Request をキューに送信し (サーバーはこのキューをリッスンします)、送信中に一時的なキューも作成し、JMS メッセージ ヘッダーの RepyTo に設定します。サーバーはキューからリクエストを受信して処理し、ReplyTo キューを使用して SOAP レスポンスを返します。spring-ws および spring-jms ライブラリを使用してそれを実行できることはわかっています。ws と jms のスプリング統合サポートを使用して実行したいと思います。
クライアント送信要求: java オブジェクト -> Soap Message -> JMS メッセージ (ペイロードは SOAP xml) サーバー受信要求: JMS メッセージ (ペイロードは SOAP xml) -> Soap Message -> Java オブジェクト サーバーが応答を返す: Java オブジェクト - > SOAP メッセージ -> JMS メッセージ (ペイロードは SOAP xml)
たとえば、現在試している webservice クライアントの xml 構成を指定しています。不足しているものを確認していただけますか?
私が使用しているJavaコードではmessagingTemplate.convertSendAndReceive(MessageBuilder.withPayload(request).build())
、リクエストを送信します。
しかし、私はこのエラーが発生しています:
spring-ws - spring-ws 実装を spring-integration-ws 実装に変換する
spring-ws を使用して Web サービス (サーバー側) を実装しています。spring-integration-ws (ws:inbound-gateway and channels) を使用するようにコードを変更したいと思います。例を試してみましたが、実装を変換できるかどうかはまだわかりません。つまり、@Endpoint、@PayloadRoot、PayloadRootAnnotationMethodEndpointMapping、および JMS (トランスポートとして) を使用しています。私の実装の下に見つけてください:
エンドポイント クラス (MyEndpoint.java):
春の xml ファイル (applicationContext.xml):
簡単にするために、不要なコードと xml 構成を削除しました。
エンドポイント クラス (MyEndpoint.java) をそのままにして、spring-integration-ws サポート (ws:inbound-gateway とチャネル) を使用する方法はありますか?
さらに情報が必要な場合はお知らせください。
ありがとう
spring - しばらくすると、activemq キューに新しいコンシューマがありません
1 か月以来、activemq と spring で問題が再発しています。しばらくすると (1 日から 1 週間の間) コンシューマーがなくなり、新しいコンシューマーが開始されなくなり、キューがいっぱいになり始めます。
このセットアップは 1 年以上実行されましたが、問題はなく、関連する変更は何も見られませんでした。
私たちが使用している別のキューも同じ動作を示し始めましたが、頻度は低くなりました。
activemq webconsole から (多くの保留中のメッセージが表示され、コンシューマーが表示されないため)
bundle-context.xml の内容
どのログにも例外はありません。しばらくして新しい消費者を開始できなかった理由を知っている人はいますか?
ありがとう
java - jmsトピックを聞いているときにメッセージをドロップする
以下に定義するように、Springjmsリスナーを使用しています。通常は正常に動作しますが、recieveTimeout設定に基づいて常に切断および再接続していることがわかります。
私はいくつかのテストを行いましたが、トピックに投稿されているメッセージがたくさんある場合、メッセージが切断から再接続までの短い期間に届くと、リスナーが明らかに見逃してしまうため、メッセージがドロップされます。
recieveTimeoutを0に設定すると、この問題は解消されます。トピックをリッスンするときは、常にrecieveTimeoutを0に設定する必要がありますか?または私はこのプロセス全体を間違った方法で行っていますか?