RabbitMQ(2),rabbitmq

來源:互聯網
上載者:User

RabbitMQ(2),rabbitmq

上一次安裝了RabbitMQ並成功建立了vhost和user,但是生產和消費的過程還沒有完成,這次主要調了一下這個過程。

上次主要的問題是沒有實現過程代碼的編寫儲存,其實也就是Python程式,這兩天看了一下Python的基本知識,完成了

基本的Hello World的生產消費:

1.生產send.py:

進入vim,編寫生產進程


!/usr/bin/env pythonimport pikaconnection = 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()

過程:先和RabbitMQ server建立串連,localhost代表的是本機,如果要串連到其它主機,使用對應的主機地址就OK

;聲明隊列hello;由於訊息不能直接傳遞到訊息佇列當中去,所以需要一次exchange,這裡使用預設的交換

'',routing_key為隊列的名字;然後在關閉串連。


2.消費receive.py

進入vim,編寫消費進程

!/usr/bin/env pythonimport pikaconnection = 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()

過程:建立串連;聲明隊列,這裡聲明的原因是我們不知道預先存在的隊列是什麼,所以我們就確定化我們的目標

消費隊列就是我們前面縮寫的send.py裡面的隊列hello;然後建立我們的消費方法callback;然後聲明消費的

對象隊列是hello隊列;然後啟動。


測試的時候,首先啟動生產進程send.py:

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

然後我們會顯示生產的標識訊息:[x] Sent 'Hello World!'

生產進程每執行一次生產就停止了。

然後再啟動消費進程:


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

這裡我們就會發現在Received後面出現了我們生產進程中發出的資訊'Hello World!',這樣便完成了一次生產消

費過程。

也可以開啟兩個終端,在其中一個終端上一直執行生產進程,我們會發現在另一個終端上會一直顯示我們的消費標識

資訊,即邊生產邊消費。


後面第二部分的就是多個消費worker(),還在看.....












怎在一台機器上配置多個RabbitMQ

Rabbitmq的設定檔有三個,位於/etc/rabbitmq/, 這三個檔案分別是:  (1)enabled_plugins, 設定允許的外掛程式列表,該配置文檔的格式為erlang的列表格式如 [rabbitmq_management,rabbitmq_visualiser].  (2)rabbitmq.conf,設定rabbitmq的運行參數。該設定檔中的每個參數為一個erlang的 tuple,結構為{Key,Value}, Key為atom類型, Value為一個term。其中幾個關鍵參數為:  tcp_listerners設定rabbimq的監聽連接埠,預設為[5672]。  disk_free_limit 磁碟低水位線,若磁碟容量低於指定值則停止接收資料,預設值為 {mem_relative, 1.0},即與記憶體相關聯1:1,也可定製為多少byte.  vm_memory_high_watermark,設定記憶體低水位線,若低於該水位線,則開啟流控機制,預設值是0.4,即記憶體總量的40%。  hipe_compile 將部分rabbimq代碼用High Performance Erlang compiler編譯,可提升效能,該參數是實驗性,若出現erlang vm segfaults,應關掉。
 
rabbitmq_java_client322為何匯入到eclipse報錯?

有可能是工程中的jar包沒有build path,你可以在工程上右鍵-properties下選擇java build path
把工程中的jar包匯入
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.