您的位置:首页 > 运维架构 > Linux

CentOS7环境安装使用专业的消息队列产品RabbitMQ

2017-02-13 16:16 741 查看
       我们在项目开发的时候都不可避免的会有异步化的问题,比较好的解决方案就是使用消息队列,可供选择的队列产品也有很多,比如轻量级的redis,当然还有重量级的专业产品rabbitmq,rabbitmq好就好在是用erlang(二郎神)开发的,它那天生的OTP并行计算框架,轻而易举的进程间通讯,我都恨不得将后端的内存计算框架全部换成erlang。。。开个玩笑,这篇我们具体来讲讲erlang开发的一个成品,叫做rabbitmq。

一. 安装Erlang

  刚才也说了,rabbitmq只不过是erlang开发的一个成品而已,所以我们首先一定要安装好erlang环境才可以

1、安装:yum install erlang

2、检查erl

输入命令:erl

二、安装RabbitMQ:

1、下载安装包:

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
2、安装:

rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm

3、启用web管理插件

rabbitmq-plugins enable rabbitmq_management

4、启动RabbitMQ

chkconfig rabbitmq-server on

rabbitmq-server start

5、查看状态

rabbitmqctl
status

6、增加用户
rabbitmqctl add_user xyt xyt

rabbitmqctl
set_user_tags xyt administrator

7、查看用户列表

rabbitmqctl
list_users

三、防火墙配置

编辑:vi /etc/sysconfig/iptables

添加:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT

重启防火墙:service iptables start

四、验证RabbitMQ

键入127.0.0.1:15672 就可以看到管理界面啦。

 


RabbitMq权限问题


异常:
Exception in thread "main" java.io.IOException
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:378)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:678)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:722)
at upsmart.zhsen.ServerProducer.main(ServerProducer.java:33)
Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED - access to vhost '/' refused for
user 'mq', class-id=10, method-id=40)
at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:361)
at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:226)
at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
... 4 more
原因:
用户‘mq’没有权限访问‘/’

sudo rabbitmqctl list_users
列出用户权限
Listing users ...
mq
[administrator]
guest
[administrator]

sudo rabbitmqctl  set_permissions -p / mq '.*' '.*' '.*'
该命令使用户mq具有‘/’这个virtual host中所有资源的配置、写、读权限以便管理其中的资源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: