目录
1.ActiveMQ的Broker
- 相当于一个ActiveMQ服务器实例
- Broker其实就是实现了用代码的形式启动ActiveMQ将MQ嵌入到Java代码中,以便随时用随时启动,在用的时候再去启动这样能节省了资源,也保证了可靠性
不同的配置文件模拟不同的实例
- ActiveMQ默认是按照conf目录下的activemq.xml配置文件启动
- 比如当我们创建另外的配置文件,想通过另外的文件启动不同的实例
- 即在启动命令后加xbean:file:要启动的配置文件的绝对路径
嵌入式Broker
- 用ActiveMQ Broker作为独立的消息服务器来构建Java应用
- ActiveMQ也支持在vm中通信基于嵌入式的broker,能够无缝的集成其他java应用
- 示例代码演示:
- 在pom.xml的依赖中需要引入如下
- 完整pom.xml
-
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.cqu</groupId> <artifactId>activemq_Demo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!--activemq所依赖的jar包--> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.15.9</version> </dependency> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-spring</artifactId> <version>3.16</version> </dependency> <!--用于json绑定--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.5</version> </dependency> <!--下面是junit/log4j等通用基础配置--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </project>
-
写一个Broker实例程序
-
package cn.cqu.activemq; import org.apache.activemq.broker.BrokerService; public class EmbedBroker { public static void main(String[] args) throws Exception { //创建一个迷你的ActiveMQ的实例 BrokerService brokerService = new BrokerService(); brokerService.setUseJmx(true); //创建此Broker的访问地址和端口 brokerService.addConnector("tcp://localhost:61616"); //启动broker服务 brokerService.start(); } }
- 然后将此程序运行起来(我的是在我的windows上运行的,IP地址为192.168.43.78),即启动了一个迷你的ActiveMQ实例
- 然后使用上一篇博客的队列的程序进行验证,修改生产者和消费者访问地址如下:
- 启动生产者
- 启动消费者
可以看到Broker就是用Java程序模拟一个ActiveMQ,该Broker程序就是消息中间件
2.Spring整合ActiveMQ
- 1.Maven修改,需要添加Spring支持JMS的包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.cqu</groupId>
<artifactId>activemq_Demo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--activemq所依赖的jar包-->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.9</version>
</dependency>
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
<version>3.16</version>
</dependency>
<!--用于json绑定-->
<de