2016-09-24 16 views
0

ユーザーがログインできる典型的なSaaS製品を開発中です。は何かを実行します。RabbitMQ - アクセス制御:排他的/自動削除キューのみを許可する

フロントエンドはJS for webとAndroid for smartphonesです。フロントエンドは何かが更新されたときに通知を受け取って、自分のビューを更新することができます。私はこの目的のためにRabbitMQを使うことを考えています。

私の提案では、各ユーザはそれぞれ独自の交換機を持っています。ユーザーにとって何か面白いことが起こると、彼の取引所にメッセージが送信されます。次に、フロントエンドがログインすると、エクスチェンジにバインドされた排他/自動削除を作成できます。したがって、各フロントエンドセッションには独自の排他/自動削除キューがあります。したがって、それぞれのアクティブな/オンラインのフロントエンドは、予期される動作である独自のプライベートキューを持つため、通知が取得されます。

質問:どのようにフロントエンドが(おそらく耐久性のある)他の種類のキューを宣言するのを防ぐことができますか?フロントエンドは独自の排他/自動削除キューを作成するだけで済みます。それ以上のことはありません。私はドキュメント(https://www.rabbitmq.com/access-control.html)を読んでいますが、それは直接サポートされていないようですか?

答えて

0

rabbitmq_auth_backend_httpコミュニティプラグインを使用して、RabbitMQが各リクエストを承認するために呼び出す独自のカスタムWebアプリケーションを構築できます。 Webアプリケーションは非常にシンプルで、3つのエンドポイントを実装するだけで、任意の言語で記述できます。

さらに詳しい情報はhttps://github.com/rabbitmq/rabbitmq-auth-backend-httpこちらのフォルダーにDjangoアプリがあり、独自の要件をサポートするためにカスタマイズすることができます。

また、すべてのユーザーに1つのトピック交換を使用できます。各ユーザーは、そのトピック交換にバインドされた一意のキューを持つことができるので、ユーザーキーを持つすべてのメッセージは、交換を介してキューに送信されます。承認Webアプリケーションは、ユーザーがメッセージを公開しようとしているトピックキーを認識しているため、カスタム認可APIを使用して、承認されているキューのみを公開およびサブスクライブできるようにすることができます。

関連する問題