centos7安装rabbitmq+测试,完整版

1、安装依赖环境Erlang

# 下载rpm包
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
 ----------------------------------------------------------------
# 该包还需依赖到epel源,请确保已有该源,若没有则可通过以下方式安装:
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
# 查看安装是否成功
yum repolist 

# 从erlang-solutions中更新该包,并将erlang_solutions.repo添加到/etc/yum.repos.d
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
 
# 安装
yum install erlang

# 安装yum-versionlock
yum install yum-plugin-versionlock
 
# 禁止Erlang自动更新
yum versionlock erlang

2、安装RabbitMQ Server

# 导入签名
rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc

wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.7/rabbitmq-server-3.7.7-1.el7.noarch.rpm

yum install rabbitmq-server-3.7.7-1.el7.noarch.rpm

3、启动RabbitMQ Server

#开启后台管理插件
rabbitmq-plugins enable rabbitmq_management

# 设置开启启动
chkconfig rabbitmq-server on
 
# 启动服务
service rabbitmq-server start

# 开放端口
firewall-cmd --add-port=15672/tcp --permanent
firewall-cmd --reload

# 浏览器输入http://ip:15672   能看到登录界面--下边配置用户
 
#停止服务
service rabbitmq-server stop

#查看rabbitmq进程
ps -aux|grep rabbitmq

4、配置RabbitMQ

启动RabbitMQ后,会在 /var/log/rabbitmq 目录下生成运行日志,在日志的最上方,我们可以看到配置文件的信息:
centos7安装rabbitmq+测试,完整版
然而,发现刚开始的时候并没有任何配置文件。只好照着官方的介绍,到 /usr/share/doc/rabbitmq-server-3.7.7/ 目录下复制一份模板到 /etc/rabbitmq 目录下进行修改

cd /usr/share/doc/rabbitmq-server-3.7.7/
 
cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

从3.7.0开始,rabbitmq的配置文件引入了一个新的配置文件 rabbitmq.conf(https://github.com/rabbitmq/rabbitmq-server/blob/master/docs/rabbitmq.conf.example),该文件使用 key= value的格式进行配置,使配置文件看起来更加简洁易懂。当两个配置文件都存在的时候,rabbitmq只会读取旧版的配置文件。另外,官方还提到在 /usr/share/doc/rabbitmq-server-3.7.7/ 目录下,还有一个名为 advanced.config.example 的配置文件模板,用来配置rabbitmq的一些高级属性,但是我并没有找到,后面发现他已经整合到 rabbitmq.conf.example的文件末尾了。

5、配置用户权限
rabbitmq 默认会帮我们创建一个guest用户,密码也是guest。因此为了安全,建议删除该用户或修改密码。该用户拥有所有的权限的,但默认不能通过远程访问,只能通过localhost访问。为了能远程访问rabbitmq,我们可以取消guest用户的本地访问限制:

# 新版配置文件 rabbitmq.conf 打开以**释
loopback_users.guest = false
 
# 旧版配置文件 rabbitmq.config 打开以**释,并记得去掉后面的逗号
{loopback_users, []}

重启服务service rabbitmq-server restart,登录界面输入账号,密码(guest,guest)。登录成功!
centos7安装rabbitmq+测试,完整版
添加一个新的用户方法:

# 添加用户
rabbitmqctl add_user 用户名 密码
 
# 赋予用户管理员角色
rabbitmqctl set_user_tags 用户 administrator
rabbitmqctl set_permissions -p / 用户 ".*" ".*" ".*"
 

在使用rabbitmqctl 命令的时候,如果报错:
centos7安装rabbitmq+测试,完整版
问题是主机名没有映射好,因此解决方法就是将主机名加入到 /etc/hosts 文件中:
centos7安装rabbitmq+测试,完整版查看用户列表

rabbitmqctl list_users

6、修改rabbitmq打开文件数量
使用上一步配置的用户登录进管理后台,可知rabbitmq默认的文件打开数是1024,这对消息中间件来说太低了。官方建议我们在正式环境至少配置65536,而在开发环境中配置到4096。
(1)官方方法

# 打开limits.conf
vim /etc/systemd/system/rabbitmq-server.service.d/limits.conf
 
# 在Service 下添加 LimitNOFILE = 300000
[Service]
LimitNOFILE = 300000
 
# 重启服务
service rabbitmq-server restart

按官方的配置,失败,没有conf文件
(2)成功方法

# 打开rabbitmq-server.service,(没办法,找不到官方说的limits.conf)
vim /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service
 
# 同样在Service模块下,加入LimitNOFILE = 300000
[Service]
LimitNOFILE = 300000
 
# 重启rabbitmq,访问管理后台,发现打开文件数并没有修改成功,依旧是1024
 
# 打开 sysctl.conf
vim /etc/sysctl.conf
 
# 添加:
fs.file-max = 65535
 
# 重新启动机子
reboot
 
#再次访问管理后台,发现打开数已改为300000

centos7安装rabbitmq+测试,完整版7、开放端口,测试,
见:https://blog.csdn.net/zk_1325572803/article/details/90670189

8、测试代码
pom.xml

		<dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.1.1</version>
        </dependency>
// 队列名称
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] argv) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.111.133");
        factory.setUsername("root");
        factory.setPassword("root");
        factory.setPort(5672);
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        String message = "Hello World!";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
        System.out.println(" [x] Sent '" + message + "'");
        channel.close();
        connection.close();
    }

centos7安装rabbitmq+测试,完整版
centos7安装rabbitmq+测试,完整版

至此:rabbitMQ安装成功!