第一步:首先下载Erlang环境,因为RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。
下载地址:https://www.erlang.org/patches/otp-24.1.6
下载安装完后需要配置系统环境变量
此电脑–>鼠标右键“属性”–>高级系统设置–>环境变量–>“新建”系统环境变量
变量名:ERLANG_HOME
变量值就是刚才erlang的安装地址,点击确定。
然后双击系统变量path
点击“新建”,将%ERLANG_HOME%bin加入到path中。
最后windows键+R键,输入cmd,再输入erl,看到版本号就说明erlang安装成功了。
第二步:下载并安装RabbitMQ
下载地址:https://www.rabbitmq.com/download.html
双击下载后的.exe文件进行安装。
RabbitMQ安装好后接下来安装RabbitMQ-Plugins。打开命令行cd,输入RabbitMQ的sbin目录。
我的目录是:D:devToolsRabbitMQrabbitmq_server-3.9.11sbin
然后在后面输入rabbitmq-plugins enable rabbitmq_management命令进行安装
打开命令行命令行,进入RabbitMQ的安装目录: sbin,输入 rabbitmqctl status , 如果出现以下的图,说明安装是成功的,并且说明现在RabbitMQ Server已经启动了,运行正常。
打开sbin目录,双击rabbitmq-server.bat运行MQ
等几秒钟看到这个界面后,访问http://localhost:15672
然后可以看到如下界面
默认用户名和密码都是guest,登陆即可。
本次教程需要创建2个springboot项目,一个 rabbitmq-provider (生产者),一个rabbitmq-consumer(消费者)。
首先创建 rabbitmq-provider
rabbitmq的依赖:
org.springframework.boot
spring-boot-starter-amqp
2.1.3.RELEASE
然后application.yml
server:
port: 8081
spring:
application:
name: rabbitmq-provider
rabbitmq:
host: 127.0.0.1
username: guest
password: guest
port: 5672
接着我们以direct exchange(直连型交换机)为例,创建DirectRabbitConfig.java(对于队列和交换机持久化以及连接使用设置)
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DirectRabbitConfig {
//队列 起名:DirectQueue
@Bean
public Queue DirectQueue() {
// durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效
// exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable
// autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。
//return new Queue("DirectQueue",true,true,false);
//一般设置一下队列的持久化就好,其余两个就是默认false
return new Queue("DirectQueue",true);
}
//Direct交换机 起名:DirectExchange
@Bean
DirectExchange DirectExchange() {
// return new DirectExchange("DirectExchange",true,true);
return new DirectExchange("DirectExchange",true,false);
}
//绑定 将队列和交换机绑定, 并设置用于匹配键:DirectRouting
@Bean
Binding bindingDirect() {
return BindingBuilder.bind(DirectQueue()).to(DirectExchange()).with("DirectRouting");
}
@Bean
DirectExchange lonelyDirectExchange() {
return new DirectExchange("lonelyDirectExchange");
}
}
然后写个简单的接口进行消息推送
RabbitMQController.java
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/mq")
public class RabbitMQController {
@Autowired
private RabbitTemplate rabbitTemplate;
@GetMapping("/direct/{message}")
public void mqController(@PathVariable("message") String message) {
rabbitTemplate.convertAndSend("DirectExchange", "DirectRouting", message);
System.out.println("消息已发送!");
}
}
把rabbitmq-provider项目运行,调用下接口:
因为我们目前还没有消费者,所以消息还没被消费的,我们去rabbitMq管理页面看看,是否推送成功:
再看看队列
说明消息已经成功推送到rabbitMq服务器上面了。
接下来,创建消费者rabbitmq-consumer:
rabbitmq的依赖:
org.springframework.boot
spring-boot-starter-amqp
2.1.3.RELEASE
配置文件:application.yml
server:
port: 8082
spring:
application:
name: rabbitmq-provider
rabbitmq:
host: 127.0.0.1
username: guest
password: guest
port: 5672
DirectRabbitConfig.java(消费者单纯的使用,可以不用添加这个配置,直接建后面的监听就好,使用注解来让监听器监听对应的队列即可。配置上了的话,其实消费者也是生成者的身份,也能推送该消息。)这里不再配置。
然后是创建消息接收监听类,DirectReceiver.java:
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = "DirectQueue")//监听的队列名称DirectQueue
public class DirectReceiver {
@RabbitHandler
public void receiver(String message) {
System.out.println("DirectReceiver消费者收到消息: " + message.toString());
}
}
然后将rabbitmq-consumer项目运行起来,可以看到之前推送的那条消息被消费了:
本案例仅演示了Direct Exchange直连型交换机,其他类型交换机若是有兴趣,可以自己动手尝试一下哈。
完整代码下载地址:https://download.csdn.net/download/cheney6666/57032853



