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包匯入