MQ,消息队列,本质是个队列,先入先出,只不过队列中存放的内容是message而已,用于不同进程和线程之间通信。
作用:解耦和提高并发能力。
AMQP:消息队列协议。
RabbitMQ入门:
1、安装
2、添加用户
-超级管理员,可登陆管理控制台,可查看所有的信息,并且可以对用户,策略进行操作。
-监控者,可登陆管理控制台,同时可以查看rabbitmq节点的相关信息
-策略制定者,可登陆管理控制台,同时可以对policy进行管理,但无法查看节点的相关信息
-普通管理者,仅可登陆管理控制台,无法看见节点信息,也无法对策略进行管理
-其他,无法登陆管理控制台,通常就是普通的生产者和消费者
3、创建Virtual Hosts
五种队列:
1、简单队列,一个消息的生产者,一个消息的消费者,一个队列
2、work模式,一个消息的生产者,多个消息的消费者,一个队列
3、订阅模式,一个消息的生产者,一个交换机,多个消息的消费者和对应的队列
4、路由模式,相比订阅模式增加了routing key
5、主题模式,相比路由模式,将routing key和某模式进行匹配,符号#匹配一个或多个词,符号*匹配不多不少一个词
Spring AMQP
Spring对AMQP做了支持,目前只是做了RabbitMQ的实现。
入门代码:
1、导入坐标依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> </dependencies>
2、创建启动类
@SpringBootApplication public class AMQPApplication { public static void main(String[] args) { SpringApplication.run(AMQPApplication.class); } }
3、创建消费者
@Component public class Listener { @RabbitListener(queues = "simple_queue") public void listen(String msg){ System.out.println(msg); } }
4、创建生产者
@RunWith(SpringRunner.class) @SpringBootTest(classes = AMQPApplication.class) public class MqDemo { @Autowired private AmqpTemplate amqpTemplate; @Test public void testsend() throws InterruptedException{ String msg = "hello Spring amqp"; this.amqpTemplate.convertAndSend("simple_queue",msg); } }