如何在本地搭建RabbitMQ,并完成首个demo案例?

一、windows环境安装RabbitMQ步骤

1.简介

安装rabbitmq需要下载软件Erlang语言开发包和RabbitMQ文件包。文件最新下载地址如下:

Erlang: https://www.erlang.org/

RabbitMQ: https://www.rabbitmq.com/

注:注意版本的匹配,下面示例使用的是Erlang opt19.3和RabbitMQ3.6.8

2.安装教程

2.1Erlang安装

2.1.1运行Erlang安装包,一直next即可

 

2.1.2配置环境变量

ERLANG_HOME = C:\Program Files\erl8.3

path中新增 %ERLANG_HOME%\bin

2.1.3在cmd命令中输入erl,检查是否成功

 

2.2RabbitMQ安装

2.2.1运行RabbitMQ安装包,一直next即可

2.2.2配置环境变量

RABBITMQ_SERVER = C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.8

path 中新增%RABBITMQ_SERVER%\sbin

2.2.3安装管理组件

以管理员方式打开cmd命令,进入到rabbitmq的sbin目录下,运行rabbitmq-plugins.bat enable rabbitmq_management命令

 

运行成功后会出现

3.启动服务

以管理员方式打开cmd命令,运行net stop RabbitMQ && net start RabbitMQ命令,提示rabbitmq命令已经启动。

4.远程访问

打开浏览器,输入http://localhost:15672,输入默认账号:guest  密码:guest,进入以下界面

 

5.其他常用命令说明

5.1在管理员权限执行后的cmd窗口中运行net stop RabbitMQ命令,可以停止rabbitmq服务

5.2 在管理员权限执行后的cmd窗口中运行net start RabbitMQ命令,可以启动rabbitmq服务

5.3在rabbitmq的sbin目录下/管理员执行后的cmd窗户中运行rabbitmqctl status命令,可以查看rabbitmq服务是否启动

5.4在rabbitmq的sbin目录下运行rabbitmq-plugins.bat enable rabbitmq_management命令,可以安装rabbitmq管理组件

5.5在rabbitmq的sbin目录下运行rabbitmqctl stop命令,可以关闭rabbitmq的管理组件,例如http访问消息队列功能

5.6在rabbitmq的sbin目录下运行rabbitmq-server  -detached命令,可以重启rabbitmq服务并且在后台运行

 

二、在本地完成首个demo案例

1.创建生产者

用户名和密码都为admin,队列名字为test

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

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * Created by wzj on 2018/6/10.
 */
public class Producer
{
    public final static String QUEUE_NAME = "test";

    public static void main(String[] args) throws IOException, TimeoutException
    {
        //创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();

        //设置RabbitMQ相关信息
        factory.setHost("192.168.3.45");
        factory.setVirtualHost("/");
        factory.setUsername("admin");
        factory.setPassword("admin");
        factory.setPort(5672);

        //创建一个新的连接
        Connection connection = factory.newConnection();

        //创建一个通道
        Channel channel = connection.createChannel();

        // 声明一个队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);

        //发送消息到队列中
        String message = "Hello RabbitMQ";
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
        System.out.println("Producer Send +'" + message + "'");

        //关闭通道和连接
        channel.close();
        connection.close();
    }
}

 

2.创建消费者

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * Created by wzj on 2018/6/10.
 */
public class Customer
{
    private final static String QUEUE_NAME = "test";

    public static void main(String[] args) throws IOException, TimeoutException
    {
        // 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();

        //设置RabbitMQ地址
        factory.setHost("192.168.3.45");
        factory.setVirtualHost("/");
        factory.setUsername("admin");
        factory.setPassword("admin");

        //创建一个新的连接
        Connection connection = factory.newConnection();

        //创建一个通道
        Channel channel = connection.createChannel();

        //声明要关注的队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        System.out.println("Customer Waiting Received messages");

        // 告诉服务器我们需要那个频道的消息,如果频道中有消息,就会执行回调函数handleDelivery
        Consumer consumer = new DefaultConsumer(channel)
        {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException
            {
                String message = new String(body, "UTF-8");
                System.out.println("Customer Received '" + message + "'");
            }
        };
        //自动回复队列应答 -- RabbitMQ中的消息确认机制
        channel.basicConsume(QUEUE_NAME, true, consumer);
    }
}

 

3.测试

1、启动消费者程序,程序会阻塞,等待生成者发送消息。

2、启动生产者程序,会发现消费者程序接收到了消息。

控制台打印如下结果:

Customer Waiting Received messages
Customer Received 'Hello RabbitMQ'

 

注:

本文转载自:

https://www.cnblogs.com/jfl-xx/p/10250184.html

https://www.codetd.com/article/1920150



posted @ 2020-07-26 10:37  Java精进之路  阅读(705)  评论(0编辑  收藏  举报