問題タブ [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 - Java/SpringからRabbitMQキュー内の未確認メッセージの数を取得しています
確認されていないメッセージの数を返す方法はありますか?
このコードを使用して、キュー内のメッセージの数を取得しています。
しかし、未確認のメッセージの数も知りたいです。
RabbitMQ管理ツールにはその情報が含まれていることを確認しました(キューごとに、Ready / UnackedおよびTotalメッセージの数が示されます)。Java/Springからそれを取得する方法が必要だと思います。
ありがとう
アップデート
わかりました。構成/キューのリストはAMPQの一部ではないため、プログラムでそれを実現する方法はないようです。
管理プラグインを有効にして、キューについてREST Webサービスにクエリを実行する可能性があります(特に)。詳細はこちら:
rabbitmq - RabbitMQの「receiveAndConvert」はClassCastExceptionを使用します
私はRabbitMQを初めて使用しreceiveAndConvert
、カスタムタイプの鉱山に「」しようとしていますPerson.java
。
これが私のプロデューサーです:
そしてここに私の消費者がいます:
My Person.javaは、名前と年齢インスタンス変数を持つ単なるPOJOです。
次のようにClassCastExceptionが発生します。
ProducerクラスとConsumerクラスは2つの異なるプロジェクトにあり、Person.javaクラスをConsumerプロジェクトにコピーして貼り付けていることに注意してください。
私の設定は次のとおりです。
python - Pythonを使用してamqpメッセージを生成し、Javaを使用して同じメッセージを消費する
Pythonからamqpメッセージを生成し、java/springから同じメッセージを消費しようとしています。
これが私のプロデューサーコード(python)です:
これが私のコンシューマーコード(java)です:
PersonのJavaクラスは次のとおりです。
および対応するPythonクラス:
(trc / suivi / amqpディレクトリ構造にあります)
クラスキャスト例外が発生します。これは、パッケージ/モジュール名またはシリアル化の問題のいずれかに関係していると確信しています...
編集:私は現在JSonを使用しており、Javaの逆シリアル化でこれを取得します:
java - amqp と camel エラー: ルートに入力がありません
キャメルとの敗走に問題があります。これは私の構成ファイルで、非常に単純です。
この場合、RabbitMQ を使用しており、hello はキュー名です。
実行すると、次のエラー メッセージが表示されます。
何か案が?Camel + RabbitMQ のサンプルまたはチュートリアルはどこで入手できますか?
- - 更新しました - -
以下のコメントの提案に従って、構成を修正し、少し前進しました。これでキューに接続できるようになりましたが、書き込もうとすると「camelContextを指定する必要があります」という例外が発生します
ありがとう、
アンドレア
spring - HTTP 要求の完了後に AMQP メッセージを正しく確認する方法
AMQP キューからのメッセージを消費するコントローラー メソッドがありますが、http 要求を実行したクライアントがデータを取得したことを可能な限り確信するまで、これらのメッセージを確認したくありません (http 要求が発生した場合にデータが失われないようにするため)。コントローラーメソッドを終了すると失敗します)。
これまでのところ、Spring インターセプターを使用して、リクエストが正常に完了した後に呼び出される「afterCompletion」を実装できることがわかりました。しかし、これはやり過ぎのように感じますか?
java - RabbitMQ サスペンド キューの消費量
耐久性のあるキューとそのバインディングを保持し、コンシューマーを一時停止する最良の方法は何ですか?
ユースケースは次のとおりです。「クラッシュさせて」、処理できないメッセージが大量に発生し続ける場合 (たとえば、データベースがダウンしている、またはスキーマの問題)、メッセージの処理を停止したいが、列。つまり、発行は許可されますが、消費は中断されます。
私は3つの解決策を考えることができます:
- キューにバインドされているすべてのコンシューマーに、メッセージを継続的に拒否して再キューイングさせることもできますが、これは、上記のロジックをプログラムで実行したことは言うまでもなく、一種の無駄なリソースです。
- すべての消費者を呼び出すことができます
basic.cancelConsumer
(以下を参照)。 - またはspring-amqpに関しては、キューにバインドされている
shutdown
すべてのSimpleMessageListenerContainersを呼び出すことができると思います。
#1
メッセージが拒否されているため、すでに行っています。問題は、これが失敗の無限 while ループのようになってしまい、その失敗をログに記録すると、さらに多くのリソースが無駄になることです。
#3
理想的なようですが、すべてのメッセージリスナーについて知ってから、シャットダウンするように通知する必要があります。ファンアウト交換を使用して、キューを一時停止する必要があることを通知できると思います。このロジックには、RabbitMQ に何かが組み込まれている必要があるように感じます。もう 1 つの問題は、複数のキューをメッセージ コンテナーにバインドできることです (すべてのキューを一時停止する必要があるわけではありません)。
#2
私はそれで消費者をキャンセルできることを知っていますがconsumerTag
、質問は(それが上記を行う正しい方法であると仮定して)どこでconsumerTag
s のリストをキューに取得するのですか?
java - Drools5.1.1予期しない累積および収集動作
SpringAMQPを使用してRabbitMQからのメッセージを読み取ります。メッセージが読み取られた後、メッセージは1つのヘッダー(親)オブジェクトと複数の詳細(子)オブジェクトに逆シリアル化されます。これらの事実は、Droolsステートレスルールセッションに挿入されます。最後に、更新されたファクトがデータベースに挿入されます。
収集機能または累積機能のいずれかを使用して詳細ファクトを集約するいくつかのルールがあります。これが例です。
これをjUnitで1回実行すると(1つのメッセージを読み取る)、TotalDurationが正しく計算されます。tomcat(メッセージを継続的に読み取る)で実行すると、TotalDurationの値が正しくなく、パスごとに増加し(メッセージが取得され、ルールが実行され、ファクトが保持され、繰り返されます)、理由がわかりません。
誰かがこの行動に光を当てることができますか?
rabbitmq - Spring Rabbit は、キャッシング接続ファクトリー構成でデフォルトをオーバーライドすることを許可しません: リリース 1.1.4
JSONデータをメッセージとして消費者に送信する春のamqpアプリケーションを試しています(Rubyで書かれています)。
どの設定を試しても接続リセット エラーが発生する
注:デフォルトのゲスト ユーザーを削除し、デフォルトの仮想ホストに対して同じ権限を持つ管理者を追加しました。
構成は次のとおりです。
そして私のプロデューサークラスでは
私は得る
com.rabbitmq.client.PossibleAuthenticationFailureException: 認証失敗の例外が原因の可能性があります
スタック トレースは接続のリセットを示します
メッセージ コンシューマーは次のとおりです。
更新:更新されたユーザー名とパスワードの設定が反映されていないようです。うさぎのログは、アプリケーションがまだゲストを使用していることを示しています
java - ラビットプリフェッチ
私はrabbitmqで春のamqpを使用しています。プリフェッチなしで 1 つのメッセージを取得したい。で構成しました
プリフェッチを無効にしてメッセージを 1 つだけ取得する方法 /