如何在本地搭建RabbitMQ,并完成首个demo案例?
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服务并且在后台运行
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