日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ消息队列(二):”Hello, World“

發(fā)布時間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ消息队列(二):”Hello, World“ 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?本文將使用Python(pika 0.9.8)實現(xiàn)從Producer到Consumer傳遞數(shù)據(jù)”Hello, World“。

???? 首先復(fù)習(xí)一下上篇所學(xué):RabbitMQ實現(xiàn)了AMQP定義的消息隊列。它實現(xiàn)的功能”非常簡單“:從Producer接收數(shù)據(jù)然后傳遞到Consumer。它能保證多并發(fā),數(shù)據(jù)安全傳遞,可擴展。

???? 和任何的Hello world一樣,它們都不復(fù)雜。我們將會設(shè)計兩個程序,一個發(fā)送Hello world,另一個接收這個數(shù)據(jù)并且打印到屏幕。
????? 整體的設(shè)計如下圖:

1. 環(huán)境配置

RabbitMQ 實現(xiàn)了AMQP。因此,我們需要安裝AMPQ的library。幸運的是對于多種編程語言都有實現(xiàn)。我們可以使用以下lib的任何一個:

  • py-amqplib??
  • txAMQP
  • pika

????? 在這里我們將使用pika. 可以通過?pip?包管理工具來安裝:

$ sudo pip install pika==0.9.8

?

????? 這個安裝依賴于pip和Git-core。

  • On Ubuntu:

    $ sudo apt-get install python-pip git-core
  • On Debian:

    $ sudo apt-get install python-setuptools git-core $ sudo easy_install pip
  • On Windows:To install easy_install, run the MS Windows Installer for?setuptools

    > easy_install pip > pip install pika==0.9.8

    2. Sending

    第一個program?send.py:發(fā)送Hello world 到queue。正如我們在上篇文章提到的,你程序的第一句話就是建立連接,第二句話就是創(chuàng)建channel:

    #!/usr/bin/env python import pika connection = pika.BlockingConnection(pika.ConnectionParameters( 'localhost')) channel = connection.channel()

    創(chuàng)建連接傳入的參數(shù)就是RabbitMQ Server的ip或者name。

    關(guān)于誰創(chuàng)建queue,上篇文章也討論過:Producer和Consumer都應(yīng)該去創(chuàng)建。

    接下來我們創(chuàng)建名字為hello的queue:

    channel.queue_declare(queue='hello')

    創(chuàng)建了channel,我們可以通過相應(yīng)的命令來list queue:

    $ sudo rabbitmqctl list_queues Listing queues ... hello 0 ...done.

    現(xiàn)在我們已經(jīng)準備好了發(fā)送了。
    從架構(gòu)圖可以看出,Producer只能發(fā)送到exchange,它是不能直接發(fā)送到queue的。現(xiàn)在我們使用默認的exchange(名字是空字符)。這個默認的exchange允許我們發(fā)送給指定的queue。routing_key就是指定的queue名字。

    channel.basic_publish(exchange='', routing_key='hello', body='Hello World!') print " [x] Sent 'Hello World!'"

    退出前別忘了關(guān)閉connection。

    connection.close()

    3. Receiving

    第二個program?receive.py?將從queue中獲取Message并且打印到屏幕。

    第一步還是創(chuàng)建connection。第二步創(chuàng)建channel。第三步創(chuàng)建queue,name = hello:

    channel.queue_declare(queue='hello')

    接下來要subscribe了。在這之前,需要聲明一個回調(diào)函數(shù)來處理接收到的數(shù)據(jù)。

    def callback(ch, method, properties, body): print " [x] Received %r" % (body,)

    subscribe:

    channel.basic_consume(callback, queue='hello', no_ack=True)

    最后,準備好無限循環(huán)監(jiān)聽吧:

    print ' [*] Waiting for messages. To exit press CTRL+C' channel.start_consuming()

    4. 最終版本

    send.py:

    #!/usr/bin/env python import pika connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.queue_declare(queue='hello') channel.basic_publish(exchange='', routing_key='hello', body='Hello World!') print " [x] Sent 'Hello World!'" connection.close()

    receive.py:

    #!/usr/bin/env python import pika connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.queue_declare(queue='hello') print ' [*] Waiting for messages. To exit press CTRL+C' def callback(ch, method, properties, body): print " [x] Received %r" % (body,) channel.basic_consume(callback, queue='hello', no_ack=True) channel.start_consuming()

    5. 最終運行

    先運行?send.py?program:

    $ python send.py [x] Sent 'Hello World!'

    send.py?每次運行完都會停止。注意:現(xiàn)在數(shù)據(jù)已經(jīng)存到queue里了。接收它:

    $ python receive.py [*] Waiting for messages. To exit press CTRL+C [x] Received 'Hello World!'

    ?

    轉(zhuǎn)載anzhsoft: http://blog.csdn.NET/anzhsoft/article/details/19570187

    ?

總結(jié)

以上是生活随笔為你收集整理的RabbitMQ消息队列(二):”Hello, World“的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。