問題タブ [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.

0 投票する
2 に答える
2446 参照

python - メッセージキューコンシューマーをDjangoのどこに配置しますか?

私は Django プロジェクトのメッセージ キューに Carrot を使用しており、チュートリアルに従っていますが、正常に動作します。しかし、この例はコンソールで実行されます。これを Django でどのように適用するのか疑問に思っています。models.py のモデルの 1 つから呼び出しているパブリッシャー クラスなので、問題ありません。しかし、消費者クラスをどこに置くべきかわかりません。

.wait() でそこに座っているだけなので、いつでも実行してメッセージをリッスンできるようにインスタンス化する必要があるポイントや場所がわかりません!

ありがとう!

0 投票する
1 に答える
8644 参照

message-queue - FIFO Qeueingシステムで、優先メッセージを実装するための最良の方法は何ですか

優先メッセージ(AMQPなど)を一貫してサポートしないメッセージ指向ミドルウェアの場合、キューにFIFOセマンティクスしかない場合に、優先消費を実装するための最良の方法は何ですか?一般的な使用例は、メッセージの大量のバックログがキューに存在する場合に、消費者が優先度の低いメッセージの前に優先度の高いメッセージを受信するシステムです。

0 投票する
1 に答える
3661 参照

process - AMQP による配信の遅延と重複メッセージの防止

メッセージを散発的に生成するシステムを使用しており、5 分ごとに 0 または 1 つのメッセージのみを送信したいと考えています。メッセージが生成されない場合、キュー コンシューマによって処理されるものはありません。5 分以内に 100 個の同じメッセージが生成された場合、そのうちの 1 つだけをキューから消費する必要があります。

AMQP(RabbitMQ) を使用していますが、rabbitmq または AMQP プロトコル内でこれを達成する方法はありますか? キューの内容を検査して、重複を挿入しないようにすることはできますか? キューの検査は悪い考えのようであり、通常、メッセージング システムに対して行うべきことではありません。

キュー検査なしで、これらのツールでこれを達成できますか? 頭に浮かぶ唯一の解決策は、すべてのメッセージを取得する 2 つ目のキューを用意し、コンシューマーが各メッセージを読み取って内部キューに入れ、5 分間待機し、受信した重複メッセージを破棄することです。遅延の後、単一のメッセージが「実際の」キューに入れられて処理されます。

これは、キュー システムで処理できる一般的な状況のようです。何か案は?

0 投票する
3 に答える
12792 参照

python - RabbitMQ サーバーでタイムアウト検出を設定するには?

このpythonバインディングでRabbitMQを試しています。

私が気づいたことの 1 つは、(クラッシュしたプログラムをエミュレートして) コンシューマーを不当に殺すと、サーバーはこのコンシューマーがまだ長い間存在していると見なすことです。この結果、他のすべてのメッセージは無視されます。

たとえば、コンシューマーを 1 回強制終了して再接続すると、1/2 のメッセージが無視されます。別のコンシューマーを強制終了すると、メッセージの 2/3 が無視されます。3 番目を殺すと、3/4 メッセージは無視されます。

確認応答をオンにしてみましたが、効果がないようです。私が見つけた唯一の解決策は、サーバーを手動で停止してリセットすることです。

より良い方法はありますか?

このシナリオを再現する方法

  • rabbitmq を実行します。

  • このライブラリを解凍します。

  • コンシューマーとパブリッシャーはこちらからダウンロードしてください。amqp_consumer.py を 2 回実行します。amqp_publisher.py を実行していくつかのデータを入力し、期待どおりに動作することを確認します。メッセージはラウンドロビン方式で受信されます。

  • kill -9 またはタスク マネージャを使用して、コンシューマ プロセスの 1 つを強制終了します。

  • メッセージを公開すると、メッセージの 50% が失われます。

0 投票する
4 に答える
1341 参照

php - PHP アプリの非同期/エンタープライズ メッセージング

PHP と Java アプリ間の非同期メッセージ キューイング (パブリッシュ、コンシューム) に最適なメッセージング プラットフォームはどれですか? 私は、RabbitMQ、ActiveMQ、OpenAMQ、Tibco Rendezvous、および Websphere MQ を見てきました。持続性が必要です。AMQP のアイデアとオープン プロトコルの使用は気に入っていますが、RabbitMQ の安定性の問題について聞いたことがあります。RabbitMQ は、主要な AMQP 実装のようです。

メッセージングの負荷は「Twitter スタイル」の規模にはなりませんが、かなりの量になり、非常に高い可用性が必要になります。

公式にサポートされている PHP API は間違いなくポイントを獲得します。Java と PHP の両方のシステムが積極的に生産と消費を行います。

0 投票する
6 に答える
5895 参照

activemq - 商用メッセージングミドルウェアとオープンソースの利点

私は、RabbitMQ、ActiveMQ、OpenAMQなどのいくつかのオープンソースメッセージキューテクノロジを評価してきました。私の質問は、Activeなどの代わりにTibco EMS、WebSphereMQ、Sonicなどの商用テクノロジを使用することでどのようなメリットが得られるかです。またはウサギ?PHPが関係する主要言語になりますが、Javaシステムも相互作用します。

0 投票する
2 に答える
10288 参照

rabbitmq - AMQP のキューごとの一意のメッセージ?

これはこの他の質問に似ていますが、少しひねりがあります: AMQP メッセージのメッセージ ID はアプリケーション自体で設定する必要があるという仕様を読んだので、理論的にはそれを使用してある程度の一意性を保証できます。 、 右?

私の主な質問は次のとおりです。そのメッセージ ID はどの範囲で一意であることが保証されていますか? 特定のキュー内に現在エンキューされているメッセージの場合は? すべてのキューで?宇宙を超えて?:-)

また、この動作は標準化されていますか? ここではRabbitMQを使用する予定ですが、ベンダー固有ではないものがあるといいでしょう:-)

ありがとう。

0 投票する
1 に答える
208 参照

client-server - Advanced Message Queuing Protocol (AMQP) を使用できますか?

クライアントサーバー型のシステム開発を行っています。ただし、この場合、クライアントはオフラインファイル モードでサーバーと通信する必要があります。この場合、AMQP を使用するのは正しいですか?

0 投票する
1 に答える
3130 参照

python - py-amqplib を使用して複数のキューでメッセージを待機する方法

Python で RabbitMQ にアクセスするためにpy-amqplibを使用しています。アプリケーションは、特定の MQ トピックをリッスンする要求を時々受け取ります。

このようなリクエストを初めて受信すると、AMQP 接続とチャネルを作成し、新しいスレッドを開始してメッセージをリッスンします。

AMQPListenerは非常に単純です。

接続を作成した後、次のように、関心のあるトピックにサブスクライブします。

これで初めて、すべて正常に動作します。ただし、後続の別のトピックへのサブスクライブ要求では失敗します。後続のリクエストでは、AMQP 接続と AMQPListener スレッドを再利用し (トピックごとに新しいスレッドを開始したくないため)、channel.queue_declare()メソッド呼び出しの上のコード ブロックを呼び出しても戻りません。また、その時点で新しいチャネルを作成しようとしましたが、connection.channel()呼び出しも返されません。

私がそれを機能させることができた唯一の方法は、トピックごとに新しい接続、チャネル、およびリスナー スレッド (つまり、routing_key) を作成することですが、これは実際には理想的ではありません。どういうわけか接続全体をブロックしているのは wait() メソッドだと思いますが、どうすればよいかわかりません。単一のリスナー スレッドを使用して、複数のルーティング キー (または複数のチャネル) を持つメッセージを受信できるはずですか?

関連する質問:トピックが不要になった場合、リスナー スレッドを停止するにはどうすればよいですか? メッセージがない場合、 channel.wait() 呼び出しは永久にブロックされているように見えます私が考えることができる唯一の方法は、ダミーメッセージをキューに送信して「毒」することです。リスナーによって停止の合図として解釈されます。

0 投票する
2 に答える
1558 参照

excel - Excelで分散計算を行う方法

何年も前に、Excel VBA で非常に使いやすい非同期ピアツーピア メッセージ指向ミドルウェアを実装しました。機構を持っていた.

MOM レイヤーを再実装することもできますが、サード パーティ製品があればそれを使用したいと思います。

私の要件は次のとおりです。

  • Excel VBAやVB6から簡単にメッセージを送れるように、
  • 計算サービスを見つけるためのリソース発見メカニズムを持つこと、
  • 非同期メッセージを送信する (計算中に Excel をロックしたくない)、
  • キューイングメカニズムを提供して、複数のサーバーで簡単に作業できるようにする
  • セットアップのための低い管理者を持つ

誰でも何か提案できますか?

多くのthx

--DM