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

相关文章
相关标签/搜索