問題タブ [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 投票する
3 に答える
15066 参照

failover - RabbitMQ キューをフェイルオーバーするには?

RabbitMQ はデフォルトでクラスタリングをサポートしていますが、キューは複製されず、キューが作成されたノードにバインドされます。アクティブなサーバーがダウンするのを待っているだけのサーバー全体を予約するのはリソースの浪費のように思えるため、彼らが文書化した DRBD ソリューション以外に、RabbitMQ を高可用性にする方法を探しています。

キューが 2 つある設定を考えています。メッセージがパブリッシュされたら、RabbitMQ クラスターがメッセージを 2 つのキューのいずれかに送信するようにします。パブリッシャーがダウンしているキューにパブリッシュしようとするとエラーが発生し、パブリッシャーが他のキューで再試行できることはわかっていますが、これをクラスター レベルで自動的に実行できるかどうか疑問に思っています。それを処理するためにクライアント コードを記述する必要はありません。これはできますか?

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

python - 単純なプロトコル (twisted.pb など) vs メッセージング (AMQP/JMS) vs Web サービス (REST/SOAP)

私は現在pythonでツイストのパースペクティブブローカーを使用しており、過去にRabbitMQのようなものに切り替えることを検討しましたが、pbを単に置き換えることができるかどうかはわかりません-ここでリンゴとオレンジを比較しているように感じます. 私は最近、REST と SOAP に関する必然的な議論についてよく読んでおり、その結果、SOA のような「エンタープライズ」Web サービスに関する記事を読むようになりました。

Web とデスクトップに erp のような機能を実装する必要があるプロジェクトが近づいているので、サーバーとクライアント間の通信に使用するアプローチ/テクノロジを検討しています。しかし、私はこれらすべてについてできる限り多くのことを学ぼうとしているので、この特定の問題を解決するだけではありません。

サーバーとクライアント間の通信に何を使用していますか?

パースペクティブ ブローカーのような Python 固有のプロトコルが相互運用性を制限する可能性があることは理解していますが、AMQP プロトコルがそれを置き換えることができると想定するのは正しいですか?

私が間違っていなければ、twisted.pb と amqp はどちらも常時接続と非常に低いオーバーヘッド プロトコルを使用しています。しかし一方では、多数のクライアントを常に接続しておくことは問題になる可能性があり、他方では、http キープアライブやシリアライゼーション部分で使用するトリックを使用しても、Web サービスでは依然として問題になります。

私の仮定のいずれかが間違っている場合は、誰かが私を正しい方向に向けて詳細を学ぶことができれば幸いです.

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

message-queue - AMQP (RabbitMQ) キューからメッセージを選択的に削除する方法は?

メッセージを読み取らずに、AMQP キューからメッセージを選択的に削除したいと考えています。

シナリオは次のとおりです。

送信側は、タイプ X の新しい情報が到着したという事実に基づいて、タイプ X のメッセージを期限切れにしたいと考えています。サブスクライバーがタイプ X の最新のメッセージをまだ消費していない可能性が非常に高いため、パブリッシャーは以前の X タイプのメッセージを削除し、最新のメッセージをキューに入れる必要があります。操作全体はサブスクライバーに対して透過的である必要があります。実際、サブスクライバーは STOMP のような単純なものを使用してメッセージを取得する必要があります。

AMQP を使用してそれを行う方法は? それとも、別のメッセージング プロトコルの方が便利なのでしょうか?

複雑なインフラは避けたい。必要なメッセージング全体は上記のように単純です: 1 つのキュー、1 つのサブスクライバー、1 つのパブリッシャーですが、パブリッシャーは特定の基準でメッセージをアドホックに削除する機能を備えている必要があります。

パブリッシャーのクライアントは Ruby を使用しますが、実際には、プロトコルでそれを行う方法を見つけ次第、どの言語にも対応します。

0 投票する
5 に答える
2933 参照

message-queue - メッセージキューシステムでは、メッセージの優先度は本質的に重要ではありませんか?

私が調べたほとんどのメッセージングシステムは、優先メッセージキューを基本的にサポートしているようです。たとえば、AMQPは最低2つの優先順位のみを指定します。AMQP実装であるRabbitMQは、優先順位をサポートしていません。ActiveMQは、数日以内にバージョン5.4で10のメッセージ優先度のサポートを取得します。10の優先度レベルは、JMS仕様で指定されています。

語順の非メッセージングの意味での優先度キューは、制約のない範囲の優先度を持つ任意のフィールドに基づいてその内容を順序付けます。このような実装がメッセージングシステムの一部として存在しないのはなぜですか?タイトルで聞いたように、優先順位は本質的に非メッセージングの概念ですか?

1つの答えは、優先度の概念により、優先度の高いメッセージが処理されている間、メッセージがキュー内で無限に長くなる可能性があることを理解しています。他に理由はありますか?

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

rabbitmq - プロデューサは、メッセージ キューを介して一貫してコンシューマにハッシュしますか?

コンシステント ハッシュによってコンシューマー間で一貫して作業を分散したいプロデューサーがいます。たとえば、コンシューマ ノード X と Y では、タスク A、B、C は常にコンシューマ X に、D、E、F はコンシューマ Y に移動する必要があります。ただし、Z がコンシューマのプールに参加すると、少しシフトする可能性があります。

コンシューマー ノードに接続するための独自のロジックを記述したくありませんでした。特に、ノードのプールへの参加と退出を管理する必要はありませんでした。そのため、RabbitMQ と、コンシューマー ノードごとの専用キューを使用する道をたどりました。 .

私が直面している問題の 1 つは、これらのキューを一覧表示することです。プロデューサーは、作業が分散される前に、使用可能なすべてのキューを知る必要があるためです。AMQP はキューの一覧表示さえサポートしていないため、私のアプローチ全体が不確かになります。ただし、 RabbitMQ と Alice (現時点では壊れています) はその機能を追加しています: RabbitMQ でキューと交換を一覧表示するための API はありますか?

これはRabbitの賢い使い方ですか?メッセージキューを使用する必要がありますか? キューが自分の作業をコンシューマ間で一貫して分割できるようにするためのより良い設計はありますか?

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

message-queue - AMQP でのメッセージ優先度の実装

AMQP を使用して、分散したマシンのコレクションが中央の場所に非同期で報告できるようにするつもりです。アイデアは、メッセージをキューにドロップし、中央ロギング エンティティが分離された方法でキューを処理できるようにすることです。「プロセス」とは、単にデータベース テーブルの行を作成または更新することです。

私が予想している問題は、メッセージ キューイング プロセスにおけるネットワーク ジッターの影響です。発行される 2 つのメッセージ間の時間がネットワーク ジッターよりも短いために、update誤って が の前に来たらどうなりますか?insert

insertAMQP 仕様を読むと、キューをスキップして最初に処理されるように、より高い優先度を s に適用することができるようです。しかし、おそらくこれは、スキップするキューがブローカーに実際に存在する場合にのみ適用されます。このジッターを吸収し、メッセージがコンシューマーに渡される前に優先順位を設定できるようにするために、ブローカーにバッファーまたは遅延を課す方法はありますか?

または、ActiveMQ が示唆するように、リシーケンサーのルートをたどる必要がありますか?

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

php - PHP 用 AMQP をインストールできません - シンボルが見つかりませんエラー

以下にリストされているコードを実行すると、次のエラーが発生します。PECL を使用して AMQP 拡張機能をインストールしました。コマンド ラインとブラウザーの両方から phpinfo を実行すると、php.ini ファイルに正常に表示されます。

そのコードを実行しようとすると、次のエラーが発生します。

これらは私が従ったインストール手順です:

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

php - cygwin / mingwを使用してWindowsでPHP拡張機能をどのようにコンパイルしますか?

Cygwinを使用してWindows(64)でRabbitMQPHPラッパーAMPQPHPラッパーを構築しようとしています。基盤となるCライブラリ(librabbitmq.dll)を正常に構築しましたが、「phpize」ステップでスタックします。

phpize && ./configure --with-rabbit && make && sudo make install

私が正しく理解していれば、Windowsには「phpize」がありません。PHPラッパーを作成するにはどうすればよいですか?

私はPHP拡張機能を構築するのはまったく新しいことに注意してください(LinuxでもWindowsでも)。

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

ruby-on-rails - 動作中のクライアントが起動後数秒で停止する

こんにちは、Starling の代わりに RabbitMQ を使用しようとしています。アプリを構成しましたが、すべて問題ないように見えますが、「script/workling_client start」を実行すると、動作し始めて数秒で終了し、理由がわかりません。

私のアプリは Starling で完璧に動作します

Fedora 13 ruby​​ 1.8.7 rails 2.3.8 mongrel を使用しています ( http://github.com/tmm1/amqpに従って構成)

ログ ファイルは空ですが、コード isidelistenアクションは確実に実行されます

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

php - 誰かがWindowsx64でphp5.2.x用のrabbitmq/amqpライブラリをコンパイルしましたか

Windows X64開発マシンのphp(5.2.x)スクリプトからRabbitMQにメッセージを公開しようとしています。

問題は、phpのdll拡張子が見つからなかったことです。私の同僚は実際にそれを構築しようとしていますが(cygwin / mingwを使用してWindowsでPHP拡張機能をコンパイルするにはどうすればよいですか?)、成功しませんでした:(。

php(5.2.x)用の有効な/動作するRabbitMQ dll拡張機能をどこで見つけることができるか誰かが知っていますか?または、誰かがそれを正しくそして迅速に行う経験を持っているなら、それは確かに非常に役に立ちます。