PythonでRabbitMQを操作してみる(1)
CDN のコンテンツと稼働状況を管理および監視する分散システムを Python を使用して実装したいと考えていたため、偶然、Yu Feng 氏の「RabbitMQ を選択する理由」など、多くの人に勧められました。等々。
MQ という言葉が登場したとき、私は MQ とは何か、つまり Message Queue (メッセージ キュー) について数時間かけて読みました。名前が示すように、メッセージ キュー、メッセージで満たされたキュー、キュー、データ構造名詞は、先入れ先出しの特性を持つデータ構造です。メッセージ キューはメッセージを配信するために使用されるだけなので、その重要性は何なのか、そのアプリケーション シナリオは何なのか、どのような特徴があるのか、独自の利点は何なのか、なぜ使用する必要があるのかなど、一連の疑問が生じます。私の心には。
何度も検索した結果、メッセージキューはアプリケーション間で情報を転送するための通信方法であるという表面的な理解に達しました。たとえば、複数のサーバーのログを分析する必要がある場合、各サーバーで 1 つのプロセスを使用してデータ (必要な情報) を Mysql データベース テーブルに書き込み、その後、そのデータを読み取るための複数のプロセスを作成できます。分析はあまり良くありませんが、すぐにこの設計の醜さが明らかになりました... 複数のプログラムでキューからデータを取得して処理したいですか?問題ありません。プログラムの数をハードコードしました...何ですか?また、圧力が動的に増減するときに、プログラムが動的に圧力を分散できるようにしますか?これは、非常に人気のある「RabbitMQ+Python Introduction to Classic Rabbit and Rabbit Nest」の例です。考えてみてください。CDN が大量のデータを送信すると、データの配布、処理、すべてが問題になります。しかし、Rabbit がこれらをどのように実装しているのかはまだ理解できません。
概念的に言うと、RabbitMQ は AMPQ (Advanced Message Protocol Queuing) の標準実装です。AMQP に詳しくない人は RabbitMQ のドキュメントを理解できないと言われています。しかし、重要な概念をしっかりと理解することしかできません。 RabbitMQ の実装原理モデル全体を次の図に示します。これは、実際にはルーティング タスク分散キューを備えたプロデューサーおよびコンシューマー モデルです。図に示すように、プロデューサは対応する情報を生成してルータに送信し、ルータは情報内のキー情報に基づいて情報を異なるメッセージ キューに配布し、コンシューマは異なるメッセージ キュー内のデータを読み取ります。の。
ブローカー: 簡単に言えば、これはメッセージキューサーバーエンティティです。
Exchange: メッセージスイッチ。どのメッセージがどのキューにルーティングされるかに従ってルールを指定します。
キュー: メッセージキューキャリア、各メッセージは 1 つ以上のキューに入れられます。
バインディング:バインディング、その機能は、ルーティングルールに従ってExchangeとQueueをバインドすることです。
ルーティング キー: ルーティング キーワード、Exchange はこのキーワードに基づいてメッセージを配信します。
vhost: 仮想ホスト。ブローカーで複数の vhost を開いて、異なるユーザーの権限を分離できます。
プロデューサー:メッセージプロデューサーはメッセージを届けるプログラムです。
コンシューマ: メッセージコンシューマは、メッセージを受け入れるプログラムです。
チャネル: クライアントの各接続で複数のチャネルを確立でき、各チャネルがセッション タスクを表します。
メッセージキューの使用手順は大まかに以下のとおりです。
(1) クライアントはメッセージキューサーバーに接続し、チャネルを開きます。
(2) クライアントは交換を宣言し、関連する属性を設定します。
(3) クライアントはキューを宣言し、関連する属性を設定します。
(4) クライアントはルーティング キーを使用して、Exchange と Queue の間のバインディング関係を確立します。
(5)クライアントは交換するメッセージを配信します。
RabbitMQ の一般的なプロセスと利点を理解した後、Fedora で RabbitMQ を試し始めました。
RabbitMQ公式Webサイトによると、インストールはここからダウンロードする必要があります
http://www.rabbitmq.com/download.htmlクリックして各バージョンのバイナリパッケージをダウンロードしてくださいRabbitmq-server-3.3.0-1.noarch.rpm をダウンロードしました
ダウンロード パス、/home/sun5495/Downloads/
[sun5495@localhost Downloads]# sudo chmod 777 Rabbitmq-server-3.3.0- を入力します。 1.noarch.rpm
実行可能ファイルの権限を変更し、実行権限を増やします。
その後、./rabbitmq-server-3.3.0-1.noarch.rpm を実行すると、実行時にエラーが報告され、インストールできません。
今すぐ Erlang をインストールする必要があることがわかりました。それを完了するには、このコマンド yum install erlang を試してください。
その後、root ユーザーを使用して
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc yum install rabbitmq-server-3.3.0-1.noarch.rpm
を実行すると、インストールは成功します。
RBMQ を起動するように設定するには、管理者アカウントを使用して
chkconfig rabbitmq-server on
サーバーの開閉コマンド
/sbin/service rabbitmq-server stop/start
を実行します。その結果、開くときに次のエラーが表示されます
Rabbitmq-server (systemctl 経由) の起動: ジョブ詳細については、「systemctl status Rabbitmq-server.service」および「journalctl -xn」を参照してください。
使用journalctl -xn命令打开日志,查看了下貌似是Erlang的某个文件拒绝访问,然后还提出了一大堆建议。
尝试一下
grep beam.smp /var/log/audit/audit.log | audit2allow -M mypolsemodule -i mypol.pp/sbin/service rabbitmq-server start
既然RabbitMQ安装也运行成功了,那么我就来尝尝RabbitMQ的鲜吧。就从官网上的例子一步一笔来做好了。
由于我使用的是Python,那么就需要安装一些支持RabbitMQ的库来进行操作,其中包括
py-amqplib,txAMQP,pika这几种,按照官网的tutorial,我也安装了pika。
pip install pika
从最简单的收发消息开始。即一端发送消息,一端接收消息。
发送方即生产者,首先要创建与RabbitMQ服务器的连接,
#!/usr/bin/env pythonimport pikaconnection = pika.BlockingConnection(pika.ConnectionParameters( 'localhost'))channel = connection.channel()
此处服务器连接本地localhost,也可以指定ip或者主机名。
其次发送方需要声明一个队列,比如命名为sayhello
channel.queue_declare(queue='sayhello')
此时我们就可以发送消息了。由于第一个小案例比较简单,没有经过路由器,因此发送消息时,指定路由为空即可。
channel.basic_publish(exchange='', routing_key='hello', body='hello world')print "Sent ‘hello world'"
最后关闭连接即可。
connection.close()
接收方即消费者,需要从队列上获取数据,因此也需要绑定一个队列
channel.queue_declare(queue='hello')
同时,由于接收方的工作方式是基于队列的消息执行一个回调函数,当收到消息时,Pika就会执行相应的回调函数,因此我们需要定义此函数。
def callback(ch, method, properties, body): print " [x] Received %r" % (body,)
接下来我们需要初始化这个消费者,并对消费者进行启动。
channel.basic_consume(callback, queue='hello', no_ack=True)print ' [*] Waiting for messages. To exit press CTRL+C'channel.start_consuming()
OK执行成功。
接下来就逐步的深入体验RabbitMQ的独特魅力。
以上就是Python操作RabbitMQ初体验(一)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。
