一. 簡介
引用其他文章:
Apache Apollo是一個代理伺服器,其是在ActiveMQ基礎上發展而來的,可以支援STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets 等多種協定。
Apollo允許用戶端通過開放的MQTT協定連接配接。該協定主要是用在資源有限的驅動上,以及網絡不穩定的情況下使用,是一個訂閱、釋出模型。這種驅動通常不适用類似http,stomp這類基于文本,或者類似openfire,AMQP等傳統二進制協定。MQTT是一個簡介的二進制協定,适用這類驅動資源受限,而且是不穩定的網絡條件下。之前的穩定釋出版本中,MQTT是作為一個Apollo的一個插件提供的。但是現在,這個插件已經變為開發項目的一部分。MQTT在Apollo中已經不需要其他配置檔案或者是第三方插件支援了。
MQTT是一個線路層的協定,任何實作該協定的用戶端都可以連接配接到Apollo。當然也可以整合其他MQTT相容的消息代理中。
二. Mac下apollo安裝
1.下載下傳
<a href="http://activemq.apache.org/apollo/download.html" target="_blank">apollo下載下傳以及源代碼下載下傳</a>
2.解壓
3. 添加環境變量
APOLLO_HOME=解壓目錄
4. 建立broker目錄,最好不要跟APOLLO_HOME一緻,便于以後更新
5. 建立broker
<code>1. cd broker目錄</code>
<code>2. ${APOLLO_HOME}/bin/apollo create mybroker</code>
注意windows下指令可能不同,應該可以直接把apollo.bat拖過來執行。
執行完之後,應該會提示怎麼運作:
<code>You can now start the broker by executing:</code>
<code>"/Users/huangrongwei/Documents/1_work_project/apache_apollo/apollo_broker/mybroker/bin/apollo-broker" run</code>
<code>Or you can run the broker in the background using:</code>
<code>"/Users/huangrongwei/Documents/1_work_project/apache_apollo/apollo_broker/mybroker/bin/apollo-broker-service" start</code>
6. 運作broker
按照上面的提示,選擇一個運作。第一個是前台運作,就是會占用你的指令行,不會退出。
下面一個指令是背景運作。
7.檢視apollo程序
<code>ps -elf | grep apollo</code>
結果如下;
<code>501 5418 5361 400e 0 31 0 5048532 125212 - S+ 0 ttys006 2:00.45 apollo -ea -serv 1:27下午</code>
8. 浏覽器檢視結果
<code>http://127.0.0.1:61680/ 或者 https://127.0.0.1:61681/</code>
第一個是http的,後面一個是https的。
預設登入的使用者名是admin/password,這樣就可以看到apollo的管理界面。
三. 用戶端測試apollo
在apollo的解壓檔案夾裡面有個example檔案夾,裡面有個mqtt->java
用eclipse導入這個maven工程(eclipse->file->import->maven project),注意可能需要安裝maven eclipse插件
然後裡面有個Listener.java和Publisher.java,可以訂閱和釋出消息。直接右擊->Run as java application啟動起來。
然後看輸出結果。
Listener.java最後會輸入下面的消息。表示1萬條消息接受花費了0.93秒
<code>Received 0 messages.</code>
<code>Received 1000 messages.</code>
<code>Received 2000 messages.</code>
<code>Received 3000 messages.</code>
<code>Received 4000 messages.</code>
<code>Received 5000 messages.</code>
<code>Received 6000 messages.</code>
<code>Received 7000 messages.</code>
<code>Received 8000 messages.</code>
<code>Received 9000 messages.</code>
<code>Received 10000 in 0.93 seconds</code>
四. 其他
1. curl通路apollo
<code>curl -u "admin:password" http://localhost:61680/broker.json</code>
結果{"id":"default","state":"STARTED","state_since":1499318856654,"version":"1.7.1","home_location":"/Users/huangrongwei/Documents/1_work_project/apache_apollo/apache-apollo-1.7.1","base_location":"/Users/huangrongwei/Documents/1_work_project/apache_apollo/apollo_broker/mybroker","jvm_metrics":{"heap_memory":{"used":23072848,"alloc":79691776,"max":954728448},"non_heap_memory":{"used":71784880,"alloc":74203136,"max":-1},"classes_loaded":7893,"classes_unloaded":0,"threads_current":27,"threads_peak":32,"os_arch":"x86_64","os_name":"Mac OS X 10.12.4","os_memory_total":8589934592,"os_memory_free":60743680,"os_swap_total":0,"os_swap_free":1073741824,"os_fd_open":135,"os_fd_max":6250,"os_load_average":2.90869140625,"os_cpu_time":128597245000,"os_processors":4,"runtime_name":"[email protected]","jvm_name":"Java HotSpot(TM) 64-Bit Server VM 1.8.0_131 (Oracle Corporation)","uptime":14200613,"start_time":1499318843487},"current_time":1499333764968,"virtual_hosts":["mybroker"],"connectors":["tcp","tls","ws","wss"],"connection_counter":16,"connected":0,"messages_sent":80008,"messages_received":70007,"read_counter":19251413,"write_counter":22040503}
2. mqtt協定内容
http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html#fixed-header
本文轉自rongwei84n 51CTO部落格,原文連結:http://blog.51cto.com/483181/1944976,如需轉載請自行聯系原作者