問題タブ [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.
mongodb - MongoDB スキーマ設計 - リアルタイム チャット
私は、MongoDB が提供する速度とスケーラビリティにより、MongoDB に特に適していると思われるプロジェクトを開始しています。
私が現在興味を持っているモジュールは、リアルタイム チャットに関するものです。従来の RDBMS でこれを行う場合、次のように分割します。
- チャネル (チャネルには多くのユーザーがいます)
- ユーザー (ユーザーは 1 つのチャネルを持っていますが、多くのメッセージを持っています)
- メッセージ (メッセージにはユーザーがいます)
この使用例の目的として、通常は一度に 5 つのチャネルがアクティブになり、それぞれが 1 秒あたり最大 5 つのメッセージを処理すると想定したいと思います。
高速である必要がある特定のクエリ:
- 新しいメッセージを取得します (ブックマーク、タイム スタンプ、またはインクリメント カウンターに基づいていますか?)
- チャンネルにメッセージを投稿する
- ユーザーがチャネルに投稿できることを確認する
MongoDB のドキュメント制限が 4MB であることを念頭に置いて、スキーマをどのように設計しますか? あなたはどのように見えますか?気をつけるべき落とし穴はありますか?
php - リアルタイム ブラウザ ベースのゲームには、AMQP と XMPP のどちらを選択する必要がありますか?
ブラウザベースのフラッシュフリーの JavaScript を使用したリアルタイムのターン制ゲームで、AMQP (RabbitMQ) と XMPP (eJabberd) のどちらかを選択しています。AMQP と XMPP プロトコルについてはよくわかりません。ユーザー認証と MySQL でのデータストア取得に PHP を使用したいと考えています。私の知る限り、RabbitMQ には PHP クライアントがありますが、eJabberd にはありません。
私が理解したのは、javascriptクライアントがPHPスクリプトを呼び出して必要な処理を操作し、AMQPまたはXMPPサーバーに渡して相手プレイヤーにデータを渡すことです。Wrox の「Pro XMPP Programming with JS and jQuery」という優れた本がありますが、PHP の例はありません。以下は私の質問です。
1) 私のゲームにはどのプロトコルが適していますか?
2) PHP クライアントのサポートのためだけに、RabbitMQ を選択しますか?
c# - RabbitMQ-同じ順序でメッセージのセットを取得できません
C#でRabbitMQを使用しています。これが私のシナリオです
- 別のプロセスがメッセージをキューに公開します
- クライアントはキューからN個のメッセージのセットを読み取る必要があります
- N個のメッセージを処理する
- N個のメッセージを確認します
同じチャネルで、メッセージを受信して処理し、確認します。サーバープロセスはメッセージを公開し続けます。私が直面している問題は、次の一連のメッセージを取得しようとすると、公開プロセスによって公開されたのと同じ順序でメッセージが届かないことです。メッセージはランダムな順序で届きます。最初のメッセージセットのみが正しい順序で送信されます。
ここで何が問題になっているのですか?次のメッセージセットにアクセスするための新しいチャネルを作成していませんか?以下はサンプルコードです。
親切に助けてください。ありがとう!
python - 複数のdjangoプロセス間でタスク状態を保存する
私は、rabbitmq メッセージと Django アプリケーションの間にロギング ブリッジを構築して、バックグラウンド タスクの状態をデータベースに保存し、さらに調査/レビューできるようにしています。また、Django 管理インターフェイスを介してタスクを再発行できるようにしています。私はそれが派手なものではなく、単なる標準的な生産者と消費者のパターンだと思います。
- Web アプリケーションがメッセージ キューにパブリッシュし、初期タスク状態をデータベースに挿入する
- 別の Python プロセスであるコンシューマーは、メッセージを処理し、タスクの出力に応じてタスクの状態を更新します。
問題は、一部のタスクがデータベースにないため、実行されないことです。db commit が実行される前に Consumer がメッセージを受信したためだと思われます。したがって、基本的に Model.save() から戻ったからといって、トランザクションが終了して通信全体が中断したわけではありません。
これを修正する方法はありますか?たぶん、ある種の post_transaction シグナルを使用できますか?
前もって感謝します。
linux - ubuntu 用の安定したシンプルな amqp サーバー
Ubuntu 10.04 64 ビット OS で Python クライアントを使用して、rabbitmq-server を amqp サーバーとして使用しています。
Rabbitmq-server が起動に失敗するようになりました。最新の rabbitmq-server 1.8.0 をアンインストールしてインストールしましたが、それでも rabbitmq を動作させることができませんでした。
ubuntuシステムでamqpを使用するには、学習曲線が少ない他の代替手段が必要です。1つお勧めできますか?
messaging - AMQPとWebsphereMQ
キューイング用にAMQPをサポートするアプリケーションに取り組んでいます。一部のクライアントはWebsphereMQを使用しています。私は、これら2つのプロトコルが機能的にどのように互換性があるかを大まかに疑問に思っています。私はセロリを使用しています。これにより、Websphere MQバックエンドを記述できる限り、下位レベルのものを抽象化できるはずです。私が理解しようとしているのは、これがどれほど難しいかということです。
Websphere MQはAMQPの機能のスーパーセットを提供しますか?どちらかが私の人生を困難にするかもしれない「特徴」を持っていますか?
python - 直接交換で同一のキュー名/ルーティングキー値を使用してすべてのサブスクライバーにブロードキャストする方法
同一のキュー名とルーティングキー値を使用してすべてが直接交換に接続されている、N個のサブスクライバーの層について考えてみます。これにより、インバウンドメッセージがサブスクライバーの1つにラウンドロビンで送信される負荷分散システムが作成されます。これは、負荷が増加するにつれてサブスクライバーを追加したり、必要に応じて後で撤回したりできるため、スケールアウトの問題に対処する場合に非常に効果的です。
次に、その層のすべてのサブスクライバーにメッセージを送信できるようにするための要件を検討します(たとえば、「状態をリセットしてください」または「今すぐシャットダウンしてください」という管理メッセージ)。このことをrabbitmqで行う方法はありますか?これが不可能な場合、より良いアプローチはありますか?
私の環境はamqplibを使用したPythonです。
xmpp - リアルタイムオンラインゲームの場合はamqpまたはxmpp
マルチユーザーオンラインゲームプロジェクト用のこれらのテクノロジースイートのどれか。プロジェクト要件:1。いつでも2k-5kユーザーを処理できる。2. iphoneおよびandroid用のクライアントライブラリ(ネイティブ、javascriptなし)。3. Microsoft Windows(最も重要)用のクライアントライブラリ、またmacosxおよびlinux用。4.mod開発のための特別な優れたドキュメント5.プロジェクトはオープンソースではありません。したがって、適切なライセンスを持つライブラリのみを使用できます。
erlangとjavaでもプログラミングできますが、プログラミング言語は問題ではありません。
私は、Openfire、Tigase、ejabberd、RabbitMQなどの次のサーバーテクノロジーを検討していました。すべてが私のプロジェクトに適していますが、AMQPまたはXMPPのどのスイートが必要かについてもっと知りたいです。
AMQPがリアルタイムオンラインゲームのために特別に提供するもの。xmppよりも優れたオプションですか?
content-type - RabbitMQ のコンテンツ タイプ ヘッダーには特別な意味がありますか?
RabbitMQ のコンテンツ タイプ ヘッダーには特別な意味がありますか?それとも、プロデューサーとコンシューマーが送信するデータの種類を通知するための標準化された方法にすぎませんか? 言い換えれば、特定のコンテンツ タイプのメッセージは特別な扱いを受けるのでしょうか、それとも単なるバイトなのでしょうか?
jms - RabbitMQとMuleの比較
RabbitMQをMuleと比較すると、メッセージ指向アーキテクチャを使用してアプリケーションを構築します。AMQP(RabbitMQ)は必要なものをすべて提供しますが、関連するテクノロジーの選択肢やESBのような同様の概念に戸惑っています。他の選択肢を考慮せずに選択をしているのかどうか疑問に思っています。
RabbitMQがメッセージブローカーであり、プロデューサーとコンシューマーの間のメッセージを仲介するのに役立つことはほぼ明らかです(すべてのフォームまたはパブリッシュサブスクライブで、TwitterやFacebookの更新などの実際の例からどのように使用されているかを理解できます)
ラバを使用してRabbitMQで行うことを達成できる場合、ラバとは何ですか?ラバをRabbitMQと同様に検討する必要がありますか?
ラバの目的はメッセージブローカーの目的とは異なりますか?
ラバは、その基礎に、適切なラバリスナーにメッセージを配信するメッセージブローカーがあると想定していますか(RabbitMQでリスナーを簡単に作成できます)
muleは完全なJavaベースシステムです(RabbitMQで行った現在の実験では、クライアントをC#、サーバーをJavaとして単純なRPCクライアントサーバーを作成するのに30分もかかりませんでした。このようなことは、Muleで簡単に実行できます)。