RabbitMQ:安装、配置

来源:互联网 发布:淘宝主账号不收取信息 编辑:程序博客网 时间:2024/06/07 02:01

1.安装Erlang

yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget
  • 1

wget http://www.erlang.org/download/otp_src_18.3.tar.gz
tar-xzvf otp_src_18.3.tar.gz//解压
cd otp_src_18.3///切换到安装路径
./configure--prefix=/usr/local/erlang//生产安装配置
make&& make install//编译安装


  • 配置erlang环境变量:
vi /etc/profile  //在底部添加以下内容    #set erlang environment    ERL_HOME=/usr/local/erlang    PATH=$ERL_HOME/bin:$PATH    export ERL_HOME PATHsource /etc/profile  //生效

测试一下是否安装成功,在控制台输入命令erl

erl  //如果进入erlang的shell则证明安装成功,退出即可。

2.安装RabbitMQ

下载安装RabbitMQ:

  • 下载安装
cd /usr/local  //切换到计划安装RabbitMQ的目录,我这里放在/usr/localwget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-generic-unix-3.6.1.tar.xz  //下载RabbitMQ安装包xz -d rabbitmq-server-generic-unix-3.6.1.tar.xztar -xvf rabbitmq-server-generic-unix-3.6.1.tar

解压后多了个文件夹rabbitmq-server-3.6.1 ,重命名为rabbitmq以便记忆。

mv rabbitmq_server-3.6.1/ rabbitmq
  • 1
  • 配置rabbitmq环境变量:
vi /etc/profile    #set rabbitmq environment    export PATH=$PATH:/usr/local/rabbitmq/sbinsource /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 启动服务:
rabbitmq-server -detached //启动rabbitmq,-detached代表后台守护进程方式启动。
  • 1
  • 2

查看状态,如果显示如下截图说明安装成功:

rabbitmqctl status

配置网页插件:

首先创建目录,否则可能报错:

mkdir /etc/rabbitmq
  • 1

然后启用插件:

rabbitmq-plugins enable rabbitmq_management
  • 1

配置防火墙:

配置linux 端口 15672 网页管理 5672 AMQP端口:

firewall-cmd --permanent --add-port=15672/tcpfirewall-cmd --permanent --add-port=5672/tcpsystemctl restart firewalld.service
  • 1
  • 2
  • 3

现在你在浏览器中输入服务器IP:15672 就可以看到RabbitMQ的WEB管理页面了,是不是很兴奋,可是你没有账号密码,别急。 



官方页面,下载对应的安装包,注意,RabbitMQ安装的时候会占用几个端口,防火墙和其他安全工具可能会阻止RabbitMQ绑定到端口。当这种情况发生时,RabbitMQ将无法启动。确保可以打开以下端口,当然也可以安装好后自己通过修改配置文件来修改占用的端口,然后开启服务。

3.开启服务

  在开始菜单中,点击RabbitMQ Service Start开开启服务,可以到服务管理器中去确认是否开启成功。下图是当前机器上找到的相关服务,状态为已启动。


打开命令行命令行,进入RabbitMQ的安装目录: cd rabbitmq_server-3.5.2\sbin

,输入 rabbitmqctl status , 如果出现以下的图,说明安装是成功的,并且说明现在RabbitMQ Server已经启动了,运行正常。


4.配置RabbitMQ

1.在开始菜单中找到RabbitMQ Command Promt,打开控制台

2 输入命令

1
rabbitmq-plugins enable rabbitmq_management
3.在启用插件成功后回看到一些提示信息,然后就可以通过 http://server-name:15672访问了,默认用户名称和密码为guest,guest




测试代码

jar包 amqp-client-3.6.5.jar

import com.rabbitmq.client.Channel;  
import com.rabbitmq.client.Connection;  
import com.rabbitmq.client.ConnectionFactory; 

public class Send {

//队列名称  

    private final static String QUEUE_NAME = "hello";  

  

    public static void main(String[] argv) throws java.io.IOException, TimeoutException  

    {  

        /** 

         * 创建连接连接到MabbitMQ 

         */  

        ConnectionFactory factory = new ConnectionFactory();  

        //设置MabbitMQ所在主机ip或者主机名  

        factory.setHost("localhost");  

        //创建一个连接  

        Connection connection = factory.newConnection();  

        //创建一个频道  

        Channel channel = connection.createChannel();  

        //指定一个队列  

        channel.queueDeclare(QUEUE_NAMEfalsefalsefalsenull);  

        //发送的消息  

        String message = "hello world!";  

        //往队列中发出一条消息  

        channel.basicPublish(""QUEUE_NAMEnull, message.getBytes());  

        System.out.println(" [x] Sent '" + message + "'");  

        //关闭频道和连接  

        channel.close();  

        connection.close();  

     }  

}


接收端代码

import java.util.concurrent.TimeoutException;


import com.rabbitmq.client.Channel;  
import com.rabbitmq.client.Connection;  
import com.rabbitmq.client.ConnectionFactory;  
import com.rabbitmq.client.QueueingConsumer;  

public class Recv {

 //队列名称  

    private final static String QUEUE_NAME = "hello";  

  

    public static void main(String[] argv) throws java.io.IOException,  

            java.lang.InterruptedException, TimeoutException  

    {  

        //打开连接和创建频道,与发送端一样  

        ConnectionFactory factory = new ConnectionFactory();  

        factory.setHost("localhost");  

        Connection connection = factory.newConnection();  

        Channel channel = connection.createChannel();  

        //声明队列,主要为了防止消息接收者先运行此程序,队列还不存在时创建队列。  

        channel.queueDeclare(QUEUE_NAMEfalsefalsefalsenull);  

        System.out.println(" [*] Waiting for messages. To exit press CTRL+C");  

          

        //创建队列消费者  

        QueueingConsumer consumer = new QueueingConsumer(channel);  

        //指定消费队列  

        channel.basicConsume(QUEUE_NAMEtrue, consumer);  

        while (true)  

        {  

            //nextDelivery是一个阻塞方法(内部实现其实是阻塞队列的take方法)  

            QueueingConsumer.Delivery delivery = consumer.nextDelivery();  

            String message = new String(delivery.getBody());  

            System.out.println(" [x] Received '" + message + "'");  

        }  

  

    }  

}


原创粉丝点击