問題タブ [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.
architecture - AMQP はマシン内およびマシン間のソフトウェア バスとして適していますか?
AMQPについて頭を悩ませようとしています。アプリケーション間のマシン間 (クラスター、LAN、WAN) 通信には優れているように見えますが、1 台のマシン内でソフトウェア バスとして使用するのに (アーキテクチャ上および現在の実装面で) 適しているかどうかはわかりません。
現在の高性能メッセージ パッシング フレームワークを取り出して AMQP に置き換える価値はありますか? それとも、ローカル通信と非ローカル通信の区別が曖昧になり、RPC と同じ罠に陥るのでしょうか?
また、マシン内通信に WAN テクノロジを使用することによるパフォーマンスへの影響についても心配していますが、これはアーキテクチャよりも実装上の問題かもしれません。
戦争の話は大歓迎です。
serialization - 非同期メッセージング用のオブジェクトのシリアル化
AMQP (qpid を使用) を使用して、Python と Java のサービスが相互に通信できるようにすることを検討しています。基本的なテキスト メッセージングは単純に見えますが、私が調査した他のすべてのメッセージング テクノロジと同様に、それで終わりのようです。インスタント メッセージング アプリケーションを構築することを除いて、文字列を送信することは特に役立つことではないと思っていたでしょう。
私の本能は、両方の言語で優れたライブラリサポートを備えた XML (デ) シリアライゼーションまたは類似のもの (JSON、YAML、プロトコルバッファーなど) を使用することです。これはベスト プラクティスですか? もしそうなら、どの (逆) シリアル化プロトコルをお勧めしますか? それとも、私はどこかでポイントを逃しており、小さなテキストを送信するだけで十分なはずですか?
geolocation - 複数の異なる地理的位置にマルチキャストを配信する
アプリケーションで1つの論理PGMベースのマルチキャストアドレスを使用する必要がありますが、そのようなアプリケーションを複数の異なる地理的位置(つまり、米国/ヨーロッパ/オーストラリアを考えてください)で「シームレスに」実行できるようにする必要があります。
アプリケーションはかなりのスループット (1 日に数百万のビジネス メッセージ) であり、多くの小さいながらも非常に頻繁にメッセージを送信するため、遅延が要求されます。古典的な Atom pub は、レイテンシの外部制限により、ここでは機能しません。
これらのデータセンターを接続するためのいくつかのオプションを考え出しましたが、最適なものが見つかりません。私が検討したオプションは次のとおりです。1) VPN を介してマルチキャスト メッセージを転送します (VPN はそのような大きな負荷を処理できますか)。2) すべてのマルチキャスト メッセージを「ラッパー メッセージ」に変換し、AMQP 経由で転送します。3) TCP 経由でマルチキャスト メッセージを他の 2 つの場所にトンネリングする専用の社内ゲートを作成します。4) その他の解決策
開発者から追加のコードを書き込む必要がないため、オプション 1 をお勧めします。しかし、信頼できる接続ではないのではないかと心配しています。
そのような接続に適用する規則はありますか?
地理的構成に関する最適なネットワーク構成は、上記の制約に対するものです。
ruby - どのグループ メッセージング テクノロジを使用するか?
私は少し混乱しているように感じます — 約 24 時間、自分のプロジェクトでどのグループ放送技術を使用するかを考えていました。
基本的に、私が必要とするものは次のとおりです。
- グループを作成します (何らかのバックエンド プロセスによって)
- 任意のクライアントによるブロードキャスト メッセージ (1:N、N:N)
- (潜在的に) ダイレクトメッセージ (1:1)
- (重要)クライアントを自分のバックエンドで認証/承認します(たとえば、ある種のHTTP APIを介して)
- バックエンド プロセス (またはサーバー プラグイン) によって特定のクライアントをキックできるようにする
これが私が持っているものです:
- Ruby または Haxe のバックエンド関連プロセス
- JS+Haxe(Flash9) のフロントエンド — ブラウザーで、理想的には 80/443 を介して通信しますが、必ずしもそうとは限りません。
したがって、このテクノロジーは、Haxe for Flash、できれば Ruby で簡単にアクセスできる必要があります。
私が考えているのは、RabbitMQ (または OpenAMQ)、RabbitMQ+STOMP、ejabberd、ejabberd+BOSH、juggernaut (Haxe ライブラリを作成する必要がある) です。
アイデア/提案はありますか?
c# - RabbitMQ C# クライアントが Apache Qpid Java Broker と通信しない
Apache Qpid Java ブローカーの M4 リリースを Windows ボックスにインストールし、すぐに使用できる構成を使用して (qpid-server.bat スクリプトを介して) 開始しました。
現在、RabbitMQ C# クライアント ライブラリ (バージョン 1.5.3、.NET 3.0 用にコンパイル) を使用してキューにメッセージを発行しようとしています。私のコードは次のとおりです。
基本的にfactory.Parameters.VirtualHost
、文字列exchange
とroutingKey
. さまざまな組み合わせを試しましたが、何もうまくいかないようです。最も近いのは、Qpid サーバー ログで次のように表示されることです。
Qpid サーバーがメッセージを受信しているように見えますが、どうすればよいかわかりません。
クライアント コードで必要な構成値に関するアドバイスがあれば (virtualhosts.xml でデフォルトの Qpid 構成を使用していることを念頭に置いて) いただければ幸いです。仮想ホスト、エクスチェンジ、キュー、ルーティング キー、および Qpid がそれらをすべてリンクする方法に関する一般的な情報も非常に役立ちます。
前もって感謝します、
アラン
cross-platform - JBoss MessagingはJava以外のクライアントをサポートしていますか?
エンタープライズ統合プロジェクトの場合、JJBossMessagingなどのメッセージブローカーへのJava以外のアクセスが非常に役立ちます。ApacheActiveMQおよびGlassFishOpenMessage Queue製品の場合、 Stompなどのネイティブまたは標準プロトコルを使用して、さまざまなクライアント実装を利用できます。
JBoss Messagingには、課題トラッカーに「STOMPプロトコルをネイティブに実装する」というタスクがあります。ただし、このタスクはJBossMessagingロードマップには表示されません。
Java以外のクライアントでJBossMessagingに接続する他のオプションはありますか?
ruby - フレームワークに依存しない Ruby バックグラウンド ワーカー ライブラリの最適なオプションは何ですか?
メッセージ キューに RabbitMQ を使用して、iPhone アプリ用に Ruby と Sinatra を使用して簡単なレシピ検索エンジンを構築しています。バックグラウンド プロセスのさまざまな実装の選択肢を探していますが、それらのほとんどは、カスタム メッセージ キュー アルゴリズムを実装するか、Rails プラグインとして動作します。
RabbitMQ とうまく連携する、フレームワークにとらわれない高品質のワーカー ライブラリに関しては、何がありますか?
そして、明らかなことを超えて、ワーカーコードを書くときに心に留めておくべきベストプラクティスはありますか?
.net - クライアントからの RabbitMQ キュー サイズを確認する
クライアント アプリケーションから RabbitMQ キュー内のメッセージ数を確認する方法があるかどうかは誰にもわかりませんか?
.NET クライアント ライブラリを使用しています。
python - DjangoプロジェクトにCeleryまたはCarrotを使用する必要がありますか?
どちらを使うべきか少し混乱しています。どちらでもうまくいくと思いますが、どちらがもう一方よりも優れているのでしょうか、それとも適切でしょうか?
java - マップをどのようにエンコードしますかプロトコルバッファを使用していますか?
メッセージのシリアル化にProtocol Buffersを使用しようとしています。
メッセージ形式には Map< String, Object > エントリを含める必要がありますが、.proto 定義をどのように記述すればよいですか?
私の知る限り、Protocol Buffers には組み込みの Map タイプがありません。繰り返しフィールドを使用して、それをモデル化できます。しかし、私が抱えている大きな問題は、すべての型を定義する必要があるということです。メッセージを柔軟にしたいので、タイプを指定できません。
何か案は?