Centos7 上安裝配置 RabbitMQ

1、安裝Erlang環境html

  網上百度了很多安裝erlang的教程,大部分都是安裝到一半就他丫的翻車了,搞得我好心累
java

            

  一、在安裝erlang以前先安裝下依賴文件(這一步不要忘掉了, 否則後面./configure的時候要報錯):linux

    [root@iZwz9eailk2tci1wywk9p2Z local]# yum install gcc glibc-devel make ncurses-devel openssl-devel xmltospring

  二、到erlang官網去下載erlang安裝包編程

    官網地址:http://www.erlang.org/downloadsvim

    做爲一名強迫症患者,我固然是選擇如今最新版本啦。右鍵複製鏈接地址,用wget進行下載框架

    [root@iZwz9eailk2tci1wywk9p2Z local]# wget -c http://erlang.org/download/otp_src_20.2.tar.gz分佈式

    

    接下來解壓:ide

     [root@iZwz9eailk2tci1wywk9p2Z local]# tar -zxvf otp_src_20.2.tar.gz測試

     [root@iZwz9eailk2tci1wywk9p2Z local]# cd otp_src_20.2/

  三、編譯安裝( 我這裏指定編譯安裝後放在/usr/local/erlang目錄裏面,這個大家能夠改爲其餘的 ):

    [root@iZwz9eailk2tci1wywk9p2Z otp_src_20.2]# ./configure --prefix=/usr/local/erlang

    [root@iZwz9eailk2tci1wywk9p2Z otp_src_20.2]# make && make install

  四、測試安裝是否成功:

     [root@iZwz9eailk2tci1wywk9p2Z erlang]# cd /usr/local/erlang/bin/ 

     [root@iZwz9eailk2tci1wywk9p2Z bin]# ./erl

    若出現如下界面,則說明咱們erlang配置OK了

     

    輸入 halt().  退出控制檯, 注意,halt後面有個點哈

  五、配置環境變量(ps:這個跟java的環境變量配置是差很少的)

    [root@iZwz9eailk2tci1wywk9p2Z local]# vim /etc/profile

    在末尾加入這麼一行便可:export PATH=$PATH:/usr/local/erlang/bin 

    更新配置文件:[root@iZwz9eailk2tci1wywk9p2Z local]# source /etc/profile

    更新以後在任意地方輸入erl能進入命令行, 那麼就說明配置成功了

 

  接下來進入咱們的核心部分:配置rabbitmq

 

2、安裝rabbitmq

  一、到官網下載最新安裝包:http://www.rabbitmq.com/releases/rabbitmq-server/ 

    [root@iZwz9eailk2tci1wywk9p2Z local]# wget -c http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-generic-unix-3.6.15.tar.xz

    解壓:

      [root@iZwz9eailk2tci1wywk9p2Z local]# xz -d rabbitmq-server-generic-unix-3.6.15.tar.xz 

      [root@iZwz9eailk2tci1wywk9p2Z local]# tar -xvf rabbitmq-server-generic-unix-3.6.15.tar

  二、配置rabbitmq的環境變量(這個跟上面的erlang配置以及java的環境變量差很少)

    [root@iZwz9eailk2tci1wywk9p2Z local]# vim /etc/profile

    在末尾加入如下配置:export PATH=$PATH:/usr/local/rabbitmq_server-3.6.15/sbin

    更新配置文件:[root@iZwz9eailk2tci1wywk9p2Z local]# source /etc/profile

    

  三、rabbitmq的基本操做:

    啓動:rabbitmq-server -detached

    關閉:rabbitmqctl stop

    查看狀態:rabbitmqctl status

  四、配置rabbitmq網頁管理插件

    啓用插件:root@iZwz9eailk2tci1wywk9p2Z local]# rabbitmq-plugins enable rabbitmq_management

       訪問管理頁面:http://192.168.?.?:15672  端口默認爲15672

      

    默認來賓用戶:guest, 來賓用戶密碼:guest

  五、開啓rabbitmq遠程訪問

    添加用戶:rabbitmqctl add_user XRom XRom123  //XRom是用戶名, XRom123是用戶密碼

    添加權限:rabbitmqctl set_permissions -p "/" XRom ".*" ".*" ".*"

    修改用戶角色:rabbitmqctl set_user_tags XRom administrator

    而後就能夠遠程訪問了,而後可直接配置用戶權限等信息

  六、rabbitmq經常使用命令

    add_user        <UserName> <Password>

    delete_user    <UserName>

    change_password <UserName> <NewPassword>

    list_users

    add_vhost    <VHostPath>

    delete_vhost <VHostPath>

    list_vhostsset_permissions  [-p <VHostPath>] <UserName> <Regexp> <Regexp> <Regexp>

    clear_permissions [-p <VHostPath>] <UserName>

    list_permissions  [-p <VHostPath>]

    list_user_permissions <UserName>

    list_queues    [-p <VHostPath>] [<QueueInfoItem> ...]

    list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...]

    list_bindings  [-p <VHostPath>]

    list_connections [<ConnectionInfoItem> ...]

2.3 RabbitMQ添加用戶和Virtual Host

Admin-Users-Add a user

Tags:用戶角色說明

 超級管理員(administrator)

可登錄管理控制檯,可查看全部的信息,而且能夠對用戶,策略(policy)進行操做。

監控者(monitoring)

可登錄管理控制檯,同時能夠查看rabbitmq節點的相關信息(進程數,內存使用狀況,磁盤使用狀況等)

策略制定者(policymaker)

可登錄管理控制檯, 同時能夠對policy進行管理,但沒法查看節點的相關信息。

普通管理者(management)

僅可登錄管理控制檯,沒法看到節點信息,也沒法對策略進行管理。

其餘none

沒法登錄管理控制檯,一般就是普通的生產者和消費者。

Admin-Virtual Host-Add virtual host

添加virtual host和用戶後,須要爲用戶指定virtual host,以後用該用戶能夠登陸



3.RabbitMQ的5種模式與實例

3.1 簡單模式Hello World

功能:一個生產者P發送消息到隊列Q,一個消費者C接收

生產者實現思路:

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue,使用通道channel向隊列中發送消息,關閉通道和鏈接。

 


消費者實現思路

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue, 建立消費者並監聽隊列,從隊列中讀取消息。

3.2 工做隊列模式Work Queue

功能:一個生產者,多個消費者,每一個消費者獲取到的消息惟一,多個消費者只有一個隊列

任務隊列:避免當即作一個資源密集型任務,必須等待它完成,而是把這個任務安排到稍後再作。咱們將任務封裝爲消息並將其發送給隊列。後臺運行的工做進程將彈出任務並最終執行做業。當有多個worker同時運行時,任務將在它們之間共享。

生產者實現思路:

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue,使用通道channel向隊列中發送消息,2條消息之間間隔必定時間,關閉通道和鏈接。

消費者實現思路:

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue,建立消費者C1並監聽隊列,獲取消息並暫停10ms,另一個消費者C2暫停1000ms,因爲消費者C1消費速度快,因此C1能夠執行更多的任務。

3.3 發佈/訂閱模式Publish/Subscribe

功能:一個生產者發送的消息會被多個消費者獲取。一個生產者、一個交換機、多個隊列、多個消費者

生產者:能夠將消息發送到隊列或者是交換機。

消費者:只能從隊列中獲取消息。

若是消息發送到沒有隊列綁定的交換機上,那麼消息將丟失。

交換機不能存儲消息,消息存儲在隊列中

生產者實現思路:

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue,使用通道channel建立交換機並指定交換機類型爲fanout,使用通道向交換機發送消息,關閉通道和鏈接。

消費者實現思路:

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue,綁定隊列到交換機,設置Qos=1,建立消費者並監聽隊列,使用手動方式返回完成。能夠有多個隊列綁定到交換機,多個消費者進行監聽。

3.4 路由模式Routing

說明:生產者發送消息到交換機而且要指定路由key,消費者將隊列綁定到交換機時須要指定路由key

生產者實現思路:

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue,使用通道channel建立交換機並指定交換機類型爲direct,使用通道向交換機發送消息並指定key=b,關閉通道和鏈接。

消費者實現思路:

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue,綁定隊列到交換機,設置Qos=1,建立消費者並監聽隊列,使用手動方式返回完成。能夠有多個隊列綁定到交換機,但只要綁定key=b的隊列key接收到消息,多個消費者進行監聽。

3.5 通配符模式Topics  

說明:生產者P發送消息到交換機X,type=topic,交換機根據綁定隊列的routing key的值進行通配符匹配;符號#:匹配一個或者多個詞lazy.# 能夠匹配lazy.irs或者lazy.irs.cor

符號*:只能匹配一個詞lazy.* 能夠匹配lazy.irs或者lazy.cor

生產者實現思路:

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue,使用通道channel建立交換機並指定交換機類型爲topic,使用通道向交換機發送消息並指定key=key.1,關閉通道和鏈接。

 

消費者實現思路:

建立鏈接工廠ConnectionFactory,設置服務地址127.0.0.1,端口號5672,設置用戶名、密碼、virtual host,從鏈接工廠中獲取鏈接connection,使用鏈接建立通道channel,使用通道channel建立隊列queue,綁定隊列到交換機,設置Qos=1,建立消費者並監聽隊列,使用手動方式返回完成。能夠有多個隊列綁定到交換機,凡是綁定規則符合通配符規則的隊列都可以接收到消息,好比key.*,key.#,多個消費者進行監聽。

4.spring集成rabbitmq配置

Spring提供了AMQP的一個實現,而且spring-rabbit是RabbitMQ的一個實現,下面給出訂閱者模式的事例配置以下:

5.總結

RabbitMQ提供了6種模式,分別是HelloWorld,Work Queue,Publish/Subscribe,Routing,Topics,RPC Request/reply,本文詳細講述了前5種,並給出代碼實現和思路。其中Publish/Subscribe,Routing,Topics三種模式能夠統一歸爲Exchange模式,只是建立時交換機的類型不同,分別是fanout、direct、topic。Spring提供了rabbitmq的一個實現,因此集成起來很方便,文章第4章給出了訂閱者模式的一種spring配置。

 

歡迎你們關注博主訂閱號「Java技術日誌」,提供Java相關技術分享,從Java編程基礎到Java高級技術,從JavaWeb技術基礎Jsp、Servlet、JDBC到SSH、SSM開發框架,從REST風格接口設計到分佈式項目實戰。剖析主流開源技術框架,用親身實踐來譜寫深度Java技術日誌。

參考:https://www.linuxidc.com/Linux/2016-03/129557.htm

本文出自https://www.cnblogs.com/xrog/p/8519967.html

相關文章
相關標籤/搜索