問題タブ [rabbitmq]
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.
python - RabbitMQ と Python を使用したコンテンツベースのルーティング
RabbitMQ と Python でコンテンツベースのルーティングを行うことは可能ですか?
AMQP 標準と RabbitMQ はコンテンツ ベースのルーティングをサポートすると主張していますが、コンテンツ ベースのバインディングなどの指定をサポートする Python 用のライブラリはありますか?
私が現在使用しているライブラリ (py-amqplib http://barryp.org/software/py-amqplib/ ) は、単純なパターン マッチング (#、*) によるトピックベースのルーティングのみをサポートしているようです。
benchmarking - RabbitMQメッセージコンシューマーはメッセージの消費を停止します
私たちのチームは、ActiveMQまたはRabbitMQのどちらかを選択するための急上昇中です。16個の文字列の配列、タイムスタンプ、および2つの整数を含むオブジェクトメッセージを送信する2つの小さなプロデューサー/コンシューマースパイクを作成しました。スパイクは開発者のマシンでは問題ありません(メッセージは十分に消費されています)。
それからベンチが来ました。私たちのマシンでは、多くのメッセージを送信しているときに、消費者が時々ぶら下がっていることに最初に気づきました。そこにありましたが、メッセージがキューに蓄積されていました。
ベンチプレートフォームに行ったとき:
- 2台のrabbitmqマシンのクラスター4コア/3.2Ghz、4Gb RAM、VIPによる負荷分散
- 1〜6人のコンシューマーがrabbitmqマシンで実行され、メッセージをmysql DB(DBと同じタイプのマシン)に保存します。
- 12台のASマシン(tomcat)で実行されている12人のプロデューサーが、別のマシンで実行されているjmeterで攻撃されました。同じ負荷のRabbitMQメッセージを生成するサーブレットでは、負荷は1秒あたり約600〜700のhttpリクエストです。
時々 、消費者がハングすることに気づきました(まあ、彼らはブロックされていませんが、彼らはもうメッセージを消費しません)。各コンシューマーがデータベースに約100msg/秒を保存するため、消費を停止すると、DBに保存される1秒あたりのメッセージ全体が同じ比率で減少することがわかります(たとえば、3人のコンシューマーが停止すると、約600msgに減少します。 /秒から300msg/秒)。
その間、プロデューサーは問題なく、jmeterレート(約600msg /秒)でプロデュースします。メッセージはキューにあり、まだ「生きている」消費者によって受け取られます。
最初にすべてのサーブレットをプロデューサーにロードしてから、すべてのコンシューマーを1つずつ起動し、接続に問題がないかどうかを確認してから、jmeterを実行します。
1つの直接取引所にメッセージを送信しています。すべてのコンシューマーは、交換にバインドされた1つの永続キューをリッスンしています。
その点が私たちの選択にとって重要です。これをrabbitmqで見たことがありますか?何が起こっているのかわかりますか?
ご回答ありがとうございます。
ruby - RabbitMQ/AMQP 未処理チャネル エラー - NOT_FOUND
Ruby スクリプト ( Bunnyを使用) から RabbitMQ にメッセージを発行し、node.js サーバー ( node-amqpを使用) からメッセージを消費しようとしています。
最初のメッセージは正常に到着しますが、node.js 内にエラーが記録され、接続が閉じられ、それ以上のメッセージは受信されません。
2 つのメッセージを交換に公開してから node.js サーバーを実行すると、エラーがログに記録される前に両方のメッセージが到着することがわかります。これは、RabbitMQ が空のときに交換またはキューを閉じていることを示唆しています。ただし、これらの両方で autoDelete を false に設定しているため、そうすべきではありません。
助言がありますか?
私の node.js スクリプトは次のようになります。
私の Ruby スクリプトは次のようになります。
activemq - 構築済みのAMQPおよびSTOMPクライアント(GUIクライアントの場合と同様)
MQサーバーで遊んでそのセマンティクスに慣れるためのクライアント(クライアントライブラリではなくGUIクライアントのように)を探しています。ボタン(またはテキストコマンド)を押すだけでメッセージを送受信し、サーバーのキューとメッセージのステータスについて更新するものもあります。管理はボーナスになります。UIはグラフィカルである必要はありません(つまり、コマンドラインクライアントで問題ありません)。
サーバーはおそらくRabbitMQを実行するので、ActiveMQと同様に、RabbitMQ固有のものはすべて問題ありません。しかし、私はむしろ一般的なAMQPまたはSTOMPツールが欲しいです。
それで、そのようなものは存在しますか?
一部の管理ツールと監視ツールには両方のサーバーディストリビューションが付属していますが、クライアントは付属していません。
xmpp - yammer のようなサービスは xmpp をどのように使用しますか? xmpp はキューとパスを交差しますか?
yammer のようなサービスは xmpp をどのように使用しますか? xmpp はキューとパスを交差しますか? つまり、xmpp の代わりに rabbitmp を使用できますか、それとも完全に異なるものですか?
rabbitmq - RabbitMQでのセロリタスクの優先度の回避策?
いくつかのデータ処理タスクを処理するためのキューとして、RabbitMQの上でCeleryを使用してDjangoを実行しています。私は、ユーザーが最初にサインアップしたときと、定期的にデータを更新するために、セロリのタスクを開始しています。ただし、もちろん、現在オンラインになっているユーザーを実行しているタスクを優先したいと思います。セロリのタスクに優先順位が設定されていることに気づきましたが、rabbitmqはこれをサポートしていないようです。このスレッドhttp://groups.google.com/group/celery-users/browse_thread/thread/ac3b6123d63421e5/b7740def1389e87e?lnk=gst&q=priority#b7740def1389e87eは、優先度の高いキューと優先度の低いキューの2つの異なるキューがあることを示しています。優先度の低いタスクのレート制限。
誰かが優先順位を実装するための良い回避策を持っていますか?前もって感謝します!
failover - RabbitMQ キューをフェイルオーバーするには?
RabbitMQ はデフォルトでクラスタリングをサポートしていますが、キューは複製されず、キューが作成されたノードにバインドされます。アクティブなサーバーがダウンするのを待っているだけのサーバー全体を予約するのはリソースの浪費のように思えるため、彼らが文書化した DRBD ソリューション以外に、RabbitMQ を高可用性にする方法を探しています。
キューが 2 つある設定を考えています。メッセージがパブリッシュされたら、RabbitMQ クラスターがメッセージを 2 つのキューのいずれかに送信するようにします。パブリッシャーがダウンしているキューにパブリッシュしようとするとエラーが発生し、パブリッシャーが他のキューで再試行できることはわかっていますが、これをクラスター レベルで自動的に実行できるかどうか疑問に思っています。それを処理するためにクライアント コードを記述する必要はありません。これはできますか?
c# - RabbitMQ メッセージ交換
RabbitMQ Producer と RabbitMQ Consumer を作成しました....
プロデューサが 10 個のメッセージを生成するとします。これらの 10 件のメッセージから特定のメッセージを取得するにはどうすればよいですか。
メッセージを一意に識別し、それを読んだり、そのメッセージを消費したりする方法を知りたいです。
message-queue - AMQP (RabbitMQ) キューからメッセージを選択的に削除する方法は?
メッセージを読み取らずに、AMQP キューからメッセージを選択的に削除したいと考えています。
シナリオは次のとおりです。
送信側は、タイプ X の新しい情報が到着したという事実に基づいて、タイプ X のメッセージを期限切れにしたいと考えています。サブスクライバーがタイプ X の最新のメッセージをまだ消費していない可能性が非常に高いため、パブリッシャーは以前の X タイプのメッセージを削除し、最新のメッセージをキューに入れる必要があります。操作全体はサブスクライバーに対して透過的である必要があります。実際、サブスクライバーは STOMP のような単純なものを使用してメッセージを取得する必要があります。
AMQP を使用してそれを行う方法は? それとも、別のメッセージング プロトコルの方が便利なのでしょうか?
複雑なインフラは避けたい。必要なメッセージング全体は上記のように単純です: 1 つのキュー、1 つのサブスクライバー、1 つのパブリッシャーですが、パブリッシャーは特定の基準でメッセージをアドホックに削除する機能を備えている必要があります。
パブリッシャーのクライアントは Ruby を使用しますが、実際には、プロトコルでそれを行う方法を見つけ次第、どの言語にも対応します。
c# - RabbitMQ C# API イベント ベースのメッセージ消費
これは、サブスクリプションによってメッセージを取得するときに行うことです。Consumer に継続的にリッスンしてもらいたいので、While ループを使用します。これを偶数ベースにしたい場合はどうすればよいでしょうか。それは、その時点で新しいメッセージがキューに到着したときです。消費者のみがメッセージを消費する必要があります..またはそのような同様のイベントで..