Linux中安装rabbitmq

Linux中安装rabbitmq

我的版本是centOS 6.8的7版本的可能与这个版本的安装不太一样

找个地方创建rabbitmq的文件夹
在这里插入图片描述

执行命令进入后进行编辑
在这里插入图片描述

编辑内容如下内容是6.x的配置
在这里插入图片描述
开始安装rabbitmq的语言插件 erlang
在这里插入图片描述
用erl 查看是否安装好
在这里插入图片描述
socat安装
在这里插入图片描述
epel是yum的一个软件源,里面包含了许多基本源里没有的软件。因此,这里安装epel阿里云源,下载新repo 到/etc/yum.repos.d/,根据系统版本选择下载
在这里插入图片描述
yum -y install socat 进行安装
在这里插入图片描述
开始安装rabbitmq
去https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.2/rabbitmq-server-3.7.2-1.el6.noarch.rpm
下载对应的mq包 不用解压 执行下面的命令
在这里插入图片描述
启动、停止
service rabbitmq-server start
service rabbitmq-server stop
service rabbitmq-server restart
设置开机启动
chkconfig rabbitmq-server on

设置配置文件
cd /etc/rabbitmq
cp /usr/share/doc/rabbitmq-server-3.4.1/rabbitmq.config.example /etc/rabbitmq/

mv rabbitmq.config.example rabbitmq.config

开启用户远程访问
vi /etc/rabbitmq/rabbitmq.config
找到后将其改为如下图中内容
在这里插入图片描述
注意将其后的,号去掉

开启web界面管理工具
rabbitmq-plugins enable rabbitmq_management
service rabbitmq-server restart

在这里插入图片描述
防火墙开放15672端口
/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
/etc/rc.d/init.d/iptables save
在这里插入图片描述
将防火墙关闭,不然你将吃亏很多

  1. 重启后生效
    开启: chkconfig iptables on
    关闭: chkconfig iptables off

  2. 即时生效,重启后失效
    开启: service iptables start
    关闭: service iptables stop
    这样就好了可以在网页中输入网址加15672了
    在这里插入图片描述
    可以进行配置用户一般不用默认的用户guest
    在这里插入图片描述
    在这里插入图片描述
    开始set数据库如上图 名字前要加/

将用户set进去
在这里插入图片描述

这样就可以去发送消息了
下面给大家创建一个简单的队列 我的其他博客中有mq的代码与简单讲解共勉

public class ConnectionUtiles {
    /**
     * 获取MQ的连接
     */
    public static Connection getConnection() throws IOException, TimeoutException {
        //定义一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //设置服务地址
        factory.setHost("127.0.0.1");
        //MQ连接的端口 5672  设置端口号
        factory.setPort(5672);
        //vhost  在rabbitmq界面上获得 设置数据库
        factory.setVirtualHost("/vhost_ly");
        //设置用户名  界面上分配的用户名
        factory.setUsername("/user_ly");
        //设置密码  分配的密码
        factory.setPassword("123");
        return factory.newConnection();
    }
}

简单的消息队列
发送方------->队列------>接收方 一对一的发送消息 (这种比较单一发送与接收等待时间长,且无法达到想要的效果)
发送方

public class Sender {

    private static final String QUEUE_NAME="test_simple_queue";

    public static void main(String[] args) throws IOException, TimeoutException {
        //获取一个连接
        Connection connection = ConnectionUtiles.getConnection();
        //从连接中获取一个通道
        Channel channel = connection.createChannel();
        //创建队列声明
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);

        String msq = "hello simple !";
        channel.basicPublish("",QUEUE_NAME,null,msq.getBytes());
        System.out.println("--send msq"+msq);
        //关闭数据关闭连接
        channel.close();
        connection.close();
    }
}

接收方:

public class Receiver{

    /**
     * 简单队列的不足
     * 耦合性高,生产者一一对应消费者(如果我想有多个消费者消费队列中消息,这时就不行了)
     * 队列名变更,这时得同时变更
     *
     * simple队列是一一对应的,而我们实际开发,生产者发送消息是毫不费力的,
     * 而消费者一般是跟业务相结合的,消费者接收到消息之后就需要处理 可能需要花费时间,
     * 这时队列就会积压了很多消息
     */

	//定义队列名称    定义一次后已经启动不能修改,修改将报错,因为一个名称只能定义一次,除非再定义其他的名称
    private static final String QUEUE_NAME="test_simple_queue";

    @SuppressWarnings("deprecation")
    public static void main(String[] args) throws IOException, TimeoutException {
        //获取一个连接
        Connection connection = ConnectionUtiles.getConnection();
        //创建频道
        Channel channel = connection.createChannel();
        //队列声明
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);
        //定义消费者
        DefaultConsumer consumer = new DefaultConsumer(channel){
            //获取到达的消息
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope,
            AMQP.BasicProperties properties, byte[] body) throws IOException{
                String msg = new String(body,"utf-8");
                System.out.println("new api recv:"+msg);
            }
        };

        //监听队列
        channel.basicConsume(QUEUE_NAME,true,consumer);
    }
}

发送消息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
已经发送成功

接收消息
在这里插入图片描述
在这里插入图片描述
这样就接收成功了

猜你喜欢

转载自blog.csdn.net/baidu_41634343/article/details/88555842