MQ的简介
消息队列MQ本质上一种应用程序对应用程序的通信方法。是一种消息中间件。Active MQ 是JMS的一个具体实现,所以首先要对JMS有所了解。
JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
JMS的优势就是异步和可靠!
MQ的使用
去官网下载:http://activemq.apache.org/download.html
选择一个版本,根据自己电脑上的jdk版本,apache-activemq-5.15.0以后是1.8以上的版本
下载后解压到本地,在bin目录下win32和win64进入对应目录,用activemq.bat文件启动就可以了。(注意Activemq是依赖于JVM的,所以首先要搭好java环境)
在Maven项目中配置pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
然后在application.properties中
spring.activemq.broker-url=tcp://172.24.225.122:61610 spring.activemq.username=admin spring.activemq.password=admin spring.activemq.in-memory=true spring.activemq.pool.enabled=false spring.activemq.packages.trust-all=true
这有两个比较重要的概念,即生产者和消费者。生产者是消息的发送者,消费者是消息接收者。Activemq的消息模式有点对点模式(Queue)和消息订阅模式(Topic)。
点对点:
1. 一个消息只能被一个服务接收;
2. 消息一旦被消费,就会消失;
3 . 如果没有被消费,就会一直等待,直到被消费;
4. 多个服务监听同一个消费空间,先到先得;
订阅模式:
1. 一个消息可以被多个服务接收;
2. 订阅一个主题的消费者,只能消费自它订阅之后发布的消息;
3. 消费端如果在生产端发送消息之后启动,是接收不到消息的,除非生产端对消息进行了持久化;
使用MQ的场景
FAQ
1.服务挂掉
<persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter>