0. 消息中間件的介紹
RabbitMQ是一個“傳統(tǒng)”消息代理,可以實現(xiàn)各種消息傳遞協(xié)議清笨。它是首批實現(xiàn)合理級別功能伏钠,客戶端庫,開發(fā)工具和質(zhì)量文檔的開源消息代理之一蚂蕴。RabbitMQ最初是為實現(xiàn)AMQP而開發(fā)的低散,AMQP是一種開放式線路協(xié)議,具有強大的路由功能骡楼。雖然Java具有像JMS這樣的消息傳遞標準熔号,但它對于需要分布式消息傳遞的非Java應(yīng)用程序沒有幫助,因為它嚴重限制了任何集成場景鸟整,微服務(wù)或單片機引镊。隨著AMQP的出現(xiàn),跨語言的靈活性成為開源消息代理的真實存在吃嘿。
RabbitMQ被設(shè)計為通用消息代理祠乃,采用點對點,請求/回復(fù)和pub-sub通信樣式模式的多種變體兑燥。它使用智能代理/啞消費者模型,專注于向消費者提供一致的消息傳遞琴拧,消費者的消費速度與經(jīng)紀人跟蹤消費者狀態(tài)的速度大致相似降瞳。它是成熟的,在正確配置時表現(xiàn)良好蚓胸,得到很好的支持(客戶端庫Java挣饥,.NET,node.js沛膳,Ruby扔枫,PHP和更多語言),并且有許多可用的插件可以將它擴展到更多的用例和集成場景锹安。
1.kafka,rabbitMQ的對比
RabbitMQ中的通信可以根據(jù)需要同步或異步短荐。發(fā)布者向交換發(fā)送消息倚舀,消費者從隊列中檢索消息。通過交換將生產(chǎn)者與隊列分離可確保生產(chǎn)者不會受到硬編碼路由決策的影響忍宋。RabbitMQ還提供了許多分布式部署方案(并且確實要求所有節(jié)點都能夠解析主機名)痕貌。可以將多節(jié)點群集設(shè)置為群集聯(lián)合糠排,并且不依賴于外部服務(wù)(但某些群集形成插件可以使用AWS API舵稠,DNS,Consul等)入宦。
Apache Kafka專為高容量發(fā)布 - 訂閱消息和流而設(shè)計哺徊,旨在持久,快速和可擴展乾闰。從本質(zhì)上講落追,Kafka提供了一個持久的消息存儲,類似于日志汹忠,在服務(wù)器集群中運行淋硝,它存儲稱為主題的類別中的記錄流。
2.rabbitMQ的安裝與使用
2.1在基于RPM的Linux上安裝(RHEL宽菜,CentOS谣膳,F(xiàn)edora,openSUSE)铅乡,RabbitMQ RPM包需要sudo權(quán)限(或使用root用戶)才能安裝和管理继谚。
####1.安裝Erlang
[root@slave1 ~]# yum install erlang
[root@slave1 ~]# yum update erlang
####2.安裝RabbitMQ服務(wù)器
##下載rabbitMQ rpm安裝包
[root@slave1 ~]# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.8/rabbitmq-server-3.7.8-1.el6.noarch.rpm
[root@slave1 ~]# yum install rabbitmq-server-3.7.8-1.el6.noarch.rpm
## 開機啟動rabbitmq-server
[root@slave1 ~]# chkconfig rabbitmq-server on
#啟動rabbitMQ服務(wù)
[root@slave1 ~]# service rabbitmq-server start
#停止rabbitMQ服務(wù)
[root@slave1 ~]# service rabbitmq-server stop
#重啟rabbitMQ服務(wù)
[root@slave1 ~]# service rabbitmq-server restart
#修改配置文件
[root@slave1 ~]# cd /etc/rabbitmq/
[root@slave1 rabbitmq]# cp /usr/share/doc/rabbitmq-server-3.7.8/rabbitmq.config.example ./
[root@slave1 rabbitmq]# mv rabbitmq.config.example rabbitmq.config
[root@slave1 rabbitmq]# vim rabbitmq.config
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["test"]}]}
].
#開啟Web管理插件,這樣我們就可以通過瀏覽器來進行管理了
[root@slave1 ~]# rabbitmq-plugins enable rabbitmq_management
[root@slave1 ~]# service rabbitmq-server restart
[root@slave1 ~]# vim /etc/rabbitmq/rabbitmq.config
[root@slave1 ~]# service rabbitmq-server restart
##增加rabbitmq ui的登錄用戶
[root@slave1 ~]# rabbitmqctl add_user test 123456
[root@slave1 ~]# rabbitmqctl set_user_tags test administrator
[root@slave1 ~]# rabbitmqctl set_permissions -p "/" test ".*" ".*" ".*"
[root@slave1 ~]# rabbitmqctl list_users
Listing users
test [administrator]
guest [administrator]
2.2 在macOS中安裝rabbitMQ
#使用homebrew安裝rabbitMQ,若安裝過homebrew可以忽略下面第一句命令
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew update
$ brew install rabbitmq
#啟動命令
$ brew services start rabbitmq
#重啟命令
$ brew services restart rabbitmq
#停止命令
$ brew services stop rabbitmq
使用瀏覽器訪問ip:15672(rabbitMQ的UI界面)阵幸,可使用上面設(shè)置的test用戶密碼進行登錄