大家好,我是北君。消息队列经常被用来处理工作中的各种问题。今天智贝君就带大家学习一个非常常用的技术——RabbitMQ;接下来会有一系列关于RabbitMQ的教程。什么是RabbitMQ队列:一种数据结构,先进先出。消息队列:简单的说就是消息传输的队列。消息中间件:简单的说就是用来传输消息的中间载体,也就是把你的信息发送给接收者,它并不关心发送的数据是什么。RabbitMQ是一个消息中间件。RabbitMQ具有可靠性。支持持久化、传输确认、发布确认等,保证了MQ的可靠性。灵活的消息分发策略。这应该是RabbitMQ的一大特色。消息在进入MQ之前由Exchange(交换机)进行路由。消息分发策略包括:简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式。支持集群。多个RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker。各种协议。RabbitMQ支持多种消息队列协议,如STOMP、MQTT等。支持多语言客户端。RabbitMQ支持几乎所有常见的编程语言,包括Java、.NET、Ruby等。可视化管理界面。RabbitMQ提供了一个易于使用的用户界面,允许用户监控和管理消息代理。插件机制。RabbitMQ提供了很多插件,可以通过插件进行扩展,也可以自己写插件。为什么要使用消息队列解耦?模块之间的通信使用消息队列来降低模块之间的耦合度。异步,模块A处理完核心业务后,发送消息给模块B,模块B可以直接返回给客户端,提高性能。对于调峰,短时间内有大量请求,可以通过消息队列一一处理,防止系统宕机。HelloWorld首先,安装RabbitMQ,可以直接使用docker安装一个。docker地址:https://hub.docker.com/_/rabbitmq/tags#pullimagedockerpullrabbitmq:management#startcontainerdockerrun-id--hostnamemy-rabbit\--namerabbitmq\-p15672:15672\-p5672:5672\-eRABBITMQ_DEFAULT_USER=admin\-eRABBITMQ_DEFAULT_PASS=admin\rabbitmq:management然后访问网页:http://服务器的ip:15672,输入账号密码。记得打开端口。看到这个页面就说明安装成功,准备就绪。先写一个HelloWorldimportpomdependencyorg.springframework.bootspring-boot-starter-amqp准备工具publicclassConnectionUtils{publicstaticConnectiongetConnection(){ConnectionFactoryfactory=newConnectionFactory();factory.setHost("1.15.88.28");factory.setPort(5672);factory.setUsername("admin");factory.setPassword("admin");factory.setVirtualHost("/");尝试{返回factory.newConnection();}catch(IOException|TimeoutExceptione){e.printStackTrace();}返回空值;}}ProducerpublicclassProducer{//声明队列的名称privatestaticfinalStringQUEUE_NAME="queue_helloworld_1";publicstaticvoidmain(String[]args)throwsIOException,TimeoutException{//1.获取连接Connectionconnection=ConnectionUtils.getConne行动();//2.创建数据传输通道Channelchannel=connection.createChannel();//3.声明一个队列channel.queueDeclare(QUEUE_NAME,false,false,false,null);//4.发送数据到队列channel.basicPublish("",QUEUE_NAME,MessageProperties.PERSISTENT_TEXT_PLAIN,"第一个队列消息...".getBytes());//5.关闭通道channel.close();//6.关闭连接connection.close();}}ConsumerpublicclassConsumer{//声明队列的名称privatestaticfinalStringQUEUE_NAME="queue_helloworld_1";publicstaticvoidmain(String[]args)throwsIOException,TimeoutException{//1.获取连接Connectionconnection=ConnectionUtils.getConnection();//2.创建通道Channelchannel=connection.createChannel();//3.声明一个队列channel.queueDeclare(QUEUE_NAME,false,false,false,null);//4.声明一个消费者DefaultConsumerdefaultConsumer=newDefaultConsumer(channel){@OverridepublicvoidhandleDelivery(StringconsumerTag,Envelopeenvelope,AMQP.BasicPropertiesproperties,byte[]body)throwsIOException{System.out.println("收到的消息是:"+newString(body));channel.basicAck(envelope.getDeliveryTag(),false);}};//5.绑定消费者channel.basicConsume(QUEUE_NAME,false,defaultConsumer);}}测试先启动consumer再启动producer,可以看到consumer的console打印出production作者传递的消息摘要本文到此结束,简单介绍一下RabbitMQ是什么,以及RabbitMQ的安装