序章


すぐに行うのではなく、しばらく延期することは怠惰と見なすことができます。 実際、ほとんどの場合、おそらくそうです。 ただし、それが絶対に正しいことである場合があります。 時折、時間のかかる仕事をしばらく遅らせる必要があります。 より重要な何かに対処できるように、将来の実行のためにキューに入れる必要があります。 これを実現するには、ブローカーが必要です。メッセージを受け入れる人(例: さまざまな送信者(つまり、 Webアプリケーション)、それらをキューに入れ、関係者に配布します(つまり、 ワーカー)それらを利用する-すべて非同期でオンデマンド。

このDigitalOceanの記事では、 RabbitMQ プロジェクトを紹介することを目的としています。これは、上記で説明したシナリオ全体を処理するAdvanced Message Queuing Protocol(AMQP)を実装するオープンソースのメッセージブローカーアプリケーションスタックです。 。

メッセージング、メッセージブローカー、およびキュー


メッセージングは、プロセス、アプリケーション、およびサーバー(仮想および物理)間で特定のデータを交換する方法です。 交換されるこれらのメッセージは、特定のエンジニアリングニーズに役立ち、プレーンテキストメッセージからさまざまなニーズに対応するバイナリデータのブロブまで、あらゆるもので構成できます。 これを機能させるには、サードパーティプログラム(ミドルウェア)によって管理されるインターフェイスが必要です…ようこそメッセージブローカー

メッセージブローカーは通常、交換セットアップの各段階をカバーする専用の部分を備えたアプリケーションスタックです。 メッセージの受け入れからキューに入れて要求側に配信するまで、ブローカーは、データベースやcronジョブなどを使用するなど、専用でないソリューションや単純なハックでは通常ははるかに面倒な義務を処理します。 。 それらは、技術的に無限のバッファを構成するキューを処理し、メッセージを配置し、後で自動的にまたはポーリングによって処理されるようにポップアンドデリバリーすることによって機能します。

なぜそれらを使用するのですか?


これらのメッセージブローキングソリューションは、さまざまなサービスの仲介者のように機能します(例: Webアプリケーション)。 通常は処理にかなりの時間がかかるタスクを、それらを実行することを唯一の仕事とするサードパーティに委任できるため、Webアプリケーションサーバーによる負荷と配信時間を大幅に削減するために使用できます(例: 労働者)。 また、ある場所から別の場所に情報を渡すために、より「保証された」永続性が必要な場合にも役立ちます。

いつ使用しますか?


すべてをまとめると、説明されているコア機能は、以下を含むがこれらに限定されない多数の領域をカバーするように拡張されます。

  • リソースを大量に消費する手順をその場で実行することを強制されるのではなく、Webサーバーが要求に迅速に応答できるようにする

  • 消費のために複数の受信者にメッセージを配信する(例: 処理)

  • オフラインパーティーを許可する(すなわち 切断されたユーザー)データを永久に失うのではなく、後でフェッチします

  • バックエンドシステムへの完全非同期機能の導入

  • タスクの順序付けと優先順位付け

  • 労働者間の負荷のバランス

  • アプリケーションの信頼性と稼働時間を大幅に向上

  • およびはるかに

RabbitMQ


RabbitMQは、市場で最も人気のあるメッセージブローカーソリューションの1つであり、Advanced Message Queuing Protocolの実装としてオープンソースライセンス(Mozilla Public License v1.1)で提供されます。 Erlang言語を使用して開発されたため、実際には比較的使いやすく、使い始めることができます。 2007年の初めに最初に公開されて以来、バージョン3.2.2 (2013年12月)が最新リリースで活発に開発されています。

それはどのように機能しますか?


RabbitMQは、関連するリスト(メッセージキュー)にデータを配信するエクスチェンジ(ブローカー)を介して、メッセージの送信者(発行者)と受信者(消費者)を接続するインターフェイスを提供することで機能します。

APPLICATION       EXCHANGE        TASK LIST        WORKER
   [DATA] -------> [DATA] ---> [D]+[D][D][D] --->  [DATA]
 Publisher        EXCHANGE          Queue         Consumer 

他とどう違うの?


RabbitMQは、他のいくつかのソリューションとは異なり、本格的なアプリケーションスタックです(つまり、 メッセージブローカー)。 独自のフレームワークのように機能するのではなく、操作に必要なすべてのツールを提供します。 非常に人気があるため、RabbitMQを使い始めて、オンラインで質問の答えを見つけるのは本当に簡単です。

Advanced Message Queuing Protocol(AMQP)の概要


AMQPは、送信元から宛先にメッセージを配信および転送するための広く受け入れられているオープンソース標準です。 プロトコルおよび標準として、さまざまなアプリケーションとメッセージブローカーミドルウェアが、個別に設定された設計上の決定によって引き起こされる問題に遭遇することなく相互運用するための共通の基盤を設定します。

RabbitMQのインストール


RabbitMQパッケージは、CentOS/RHELとUbuntu/Debianベースのシステムの両方で配布されます。 ただし、ほとんどのアプリケーションと同様に、それらは古くなっています。 したがって、システムにRabbitMQをインストールするための推奨される方法は、パッケージをオンラインでダウンロードして手動でインストールすることです。

注:さまざまな理由により、新しく作成されたVPSでインストールを実行し、ここにリストされているアクションを実行します。 クライアントに積極的にサービスを提供していて、システムを変更した可能性がある場合は、動作を中断せず、問題が発生しないように、新しいシステムで次の手順を試すことを強くお勧めします。

CentOS 6/RHELベースのシステムへのインストール


RabbitMQをインストールする前に、Erlangなどの主な依存関係を取得する必要があります。 ただし、何よりもまず、システムとそのデフォルトアプリケーションを更新する必要があります。

以下を実行して、ドロップレットを更新します。

yum -y update

そして、以下のコマンドを使用して、システムでErlangを取得しましょう。

# Add and enable relevant application repositories:
# Note: We are also enabling third party remi package repositories.
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

# Finally, download and install Erlang:
yum install -y erlang

Erlangを入手したら、RabbitMQのインストールを続行できます。

# Download the latest RabbitMQ package using wget:
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm

# Add the necessary keys for verification:
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc

# Install the .RPM package using YUM:
yum install rabbitmq-server-3.2.2-1.noarch.rpm

Ubuntu 13 /Debian7ベースのシステムへのインストール


UbuntuとDebianにRabbitMQをダウンロードしてインストールするプロセスは、より新しいバージョンが必要なため、CentOSと同様になります。

システムのデフォルトのアプリケーションツールセットを更新することから始めましょう。

apt-get    update 
apt-get -y upgrade

RabbitMQアプリケーションリポジトリを有効にします。

echo "deb http://www.rabbitmq.com/debian/ testing main" >> /etc/apt/sources.list

パッケージの検証キーを追加します。

curl http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt-key add -

上記からの新しい追加でソースを更新します。

apt-get update

そして最後に、RabbitMQをダウンロードしてインストールします。

sudo apt-get install rabbitmq-server

起動時に最大接続数を管理するには、nanoを使用して次の構成ファイルを開いて編集します。

sudo nano /etc/default/rabbitmq-server

limit行のコメントを解除します(つまり、 保存する前に#)を削除し、CTRL+Xに続けてYを押して終了します。

RabbitMQの管理


前に述べたように、RabbitMQは非常に簡単に開始できます。 システムに対して以下の手順を使用すると、プロセスをすばやく管理し、システムの起動時に実行することができます(つまり、 ブート)。

管理コンソールの有効化


RabbitMQ管理コンソールは、Webベースのグラフィカルユーザーインターフェイス(GUI)を介して[RabbitMQ]サーバープロセスを監視できるプラグインの1つです。

このコンソールを使用すると、次のことができます。

  • 交換、キュー、バインディング、ユーザーを管理します

  • キュー、メッセージレート、接続を監視する

  • メッセージの送受信

  • Erlangプロセス、メモリ使用量を監視する

  • そしてもっとたくさん

RabbitMQ管理コンソールを有効にするには、以下を実行します。

sudo rabbitmq-plugins enable rabbitmq_management

コンソールを有効にすると、http://[your droplet's IP]:15672/にアクセスして、お気に入りのWebブラウザを使用してコンソールにアクセスできます。

デフォルトのユーザー名とパスワードは両方とも、ログイン用に「ゲスト」に設定されています。

:サービスの実行後にこのコンソールを有効にした場合、変更を有効にするには、コンソールを再起動する必要があります。 ご使用のオペレーティングシステムで実行できるようにするには、以下の関連する管理セクションを参照してください。

CentOS/RHELベースのシステムでの管理


アプリケーションをインストールすると、RabbitMQはデフォルトでシステムの起動時に開始するように設定されていません。

RabbitMQをデフォルトでデーモンとして開始するには、以下を実行します。

chkconfig rabbitmq-server on

アプリケーションのステータスを開始、停止、再起動、および確認するには、以下を使用します。

# To start the service:
/sbin/service rabbitmq-server start

# To stop the service:
/sbin/service rabbitmq-server stop

# To restart the service:
/sbin/service rabbitmq-server restart
    
# To check the status:
/sbin/service rabbitmq-server status

Ubuntu/Debianベースのシステムでの管理


UbuntuとDebianでアプリケーションのステータスを開始、停止、再起動、確認するには、次を使用します。

# To start the service:
service rabbitmq-server start

# To stop the service:
service rabbitmq-server stop

# To restart the service:
service rabbitmq-server restart
    
# To check the status:
service rabbitmq-server status

以上です! これで、仮想サーバーで独自のメッセージキューが機能するようになりました。

RabbitMQの構成


RabbitMQは、デフォルトで標準構成で実行されます。 一般に、すべてがスムーズに実行される限り、ほとんどのニーズに対して多くの焼き戻しを必要としません。

カスタムニーズに合わせて構成する方法については、構成のドキュメントをご覧ください。

投稿者: https ://twitter.com/ostezer