第一步:首先下载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-amqp2.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-amqp2.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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)