問題タブ [spring-amqp]
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.
java - channel.close() および connection.close() で RabbitMQ クライアントがハングアップする
Java で amqp-client を使用していますが、チャネルを閉じている間に JVM が無限にハングアップします。
それを削除するchannel.close()
と、jvm は で無限にハングアップしconnection.close()
ます。
API クラスを調べたところ、どちらの場合も、RabbitMQ API がタイムアウトを無限に取り、応答を待つだけであることがわかりました。
これに対する回避策があるかどうか教えてください。amqp-client-3.1.3 を使用しています。
どうもありがとう。
rabbitmq - RabbitMQ: キュー サーバーを 1 つだけ使用しながら、消費者と生産者のバドルを分離する
プロジェクトでrabbitmqを使用しますが、開発マシンでデバッグしたいという問題に直面しているため、最初に要求メッセージを送信するマシンに応答メッセージを送信する必要があります。それをどのように達成するのか、spring-rabbitmq フレームワークに既存のソリューションはありますか?
私たちはいくつかの解決策を検討しました。マシンごとに一連のキューを宣言するなど、キュー名のプレフィックスをマシン名で指定します。それは実現可能ですか?
hibernate - Spring ampq コンシューマー - 最初の試行で「現在のスレッドのセッションが見つかりません」というエラーが表示される
Spring MVC アプリケーションがあります。spring ampq を使用して非同期タスクを実行したいと考えています。私の REST バックエンドは @Transactional アノテーションを使用してトランザクションを管理します。作業を行った後、タスクをエクスチェンジにプッシュしてから返します。その後、タスクはコンシューマーによって受信され、最初の試行で「org.hibernate.HibernateException: No Session found for current thread」エラーを受け取ります。次に、spring-ampq は再試行してタスクをコンシューマーに送信し、今回はセッション エラーなしで機能します。
このシナリオを最初の試行で機能させるにはどうすればよいですか?
私の春のampq構成はこれに似ています( http://projects.spring.io/spring-amqp/ ):
注: foo.Foo listen() メソッドにも @Transactional アノテーションが付けられます。
私のトランザクションマネージャーは次のように構成されています。
注: セッション ファクトリは、dao ファクトリの奥深くで初期化されます。REST サービスとウサギのコンシューマの両方で同じ dao ファクトリを使用しています。
私のエラーログは次のとおりです。
リスナーのコードは次のとおりです。
REST バックエンドのコードは次のようになります。
java - Spring AMQP 統合 - 消費者マニュアルの確認
サポート付きでテストSpring-AMQP
しSpring-Integration
ています。次の構成とテストを行いました。
この構成では、メッセージが に到着するとすぐにconsumingChannel
確認応答され、キューから削除されることが明らかでした。と checkのsleep
後に高い値を付けることで、これを検証しました。それ以上の制御はありません。receive
queue-size
今私が設定した場合、春の統合を介しacknowledge-mode=MANUAL
て手動で行うように見える方法はありません。ack
メッセージを処理する必要があり、処理後、メッセージがに保持さmanual-ack
れるまでそうします。ack
durableQ
MANUAL
でackを処理する方法はありますspring-amqp-integration
か? 消費者の を制御したいので、に渡すことは避けたいChannelAwareMessageListener
です。inbound-channel-adapter
receive
アップデート:
listener-container
ownをinbound-channel-adapter
次のように使用する場合、それは可能ではないようです。
プロパティが許可されていないため、上記の構成ではエラーがスローされmessageListener
ます。タグのインライン コメントを参照してください。そのため、使用目的が無効になりました(を介しlistner-container
て公開するため)。channel
ChannelAwareMessageListener
私spring-integration
には使用できませんmanual-acknowledgement
(私は知っています、これは難しい言い方です!)、誰かがこれを検証するのを手伝ってくれますか、またはこれに必要な特定のアプローチ/構成がありませんか?
json - AMQP JsonMessageConverter と Spring MappingJacksonHttpMessageConverter の違いは何ですか?
の違いを誰か教えてください
org.springframework.amqp.support.converter.JsonMessageConverter
と
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
?
spring - 最大試行後にキューの末尾にあるうさぎ AMQP メッセージを再キューイングします
現在、RabbitMQ を春 (spring-rabbit-1.2.0-RELEASE) で使用しており、以下の構成になっています。
3 回目の試行後にメッセージをキューの末尾に再キューイングしたいと考えています。しかし、それを実行する方法が見つかりません。
誰かがアイデアを持っていますか?
よろしくお願いします。
java - Spring Integration AMQP - レスポンスの間違った JSON タイプ
Spring Integration & SI AMQP 3.0.0-RELEASE を使用しています。
2 つの SI インスタンス間で AMQP を介した非常に単純な Request-Response があります。
要求元のサーバーに応答が戻ってきたときに、SI が Response オブジェクトではなく Request オブジェクトの型を使用して応答を逆シリアル化しようとしていることがわかりました。
つまり、次のゲートウェイ インターフェイスが与えられます。
の正しい JSON がAnalyticsResponse
サーバーに到着しても、SI はそれを としてデシリアライズしようとしていますが、EntityMessage
失敗しています。
私はそれをデバッグしましたが、原因は、応答側が受信json__TypeId__
ヘッダーを提供するのではなく、受信ヘッダーをコピーしていることであると思われます。ただし、これをどこで誤って構成したかはわかりません。
ここに私の設定があります - 私は何を間違えましたか?
依頼側:
応答側:
spring - Spring Integration でのアノテーション付き構成の使用
@Configuration
次のxmlがあり、この迷惑なxmlをクラスに置き換えたい
そして私のゲートウェイ:
spring-amqp の構成アノテーション付きクラスを既に使用していますが、正常に動作します。Spring Integration 構成で同じことを行うにはどうすればよいですか?
PS: Spring 3.2 と Spring Integration 3.0 を使用しています。